home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: R-H-S / R-H-S Tools 05 (19xx)(Reiner Hobbold Software)(DE)(PD).zip / R-H-S Tools 05 (19xx)(Reiner Hobbold Software)(DE)(PD).adf / Haushaltssystem / HHB V1.2 (.txt) < prev    next >
AmigaBASIC Source Code  |  1988-06-24  |  57KB  |  2,569 lines

  1. IF FRE(-1) < 110000 THEN
  2.  LOCATE 11,20:PRINT "Es ist leider zuwenig Speicher frei !"
  3.  GOSUB Mouseclick:SYSTEM
  4. END IF
  5. ON BREAK GOSUB Ende:BREAK ON:ON ERROR GOTO Fehlerdiagnose                                                    
  6. SCREEN 2,320,200,3,1
  7. WINDOW 2," Haushaltsbuch ====== Grafikbildschirm ",(0,10)-(311,185),0,2
  8. SCREEN 1,640,200,2,2                                    
  9. WINDOW 1," Haushaltsbuch V 1.2 ============================= Geschrieben von Sauer Franz ",(0,10)-(631,186),16,1
  10. LOCATE 12,26:PRINT "Systemkonfigurierung läuft !" 
  11. MOUSE OFF : MENU OFF
  12. GOSUB Farbeinstellung
  13. GOSUB Outoffmemtext
  14. GOSUB Openlibrarys
  15. GOSUB Declarieren
  16. GOSUB Variablendim
  17. GOSUB Systemset
  18. GOSUB Systemsetload
  19. GOSUB Datalesen
  20. GOSUB Cursor
  21. CLS
  22. LOCATE 12,23:PRINT "Ich lese die Haushaltsdaten ein !"
  23. GOSUB Datenein 
  24. CLS
  25. LOCATE 12,25:PRINT "Ich lese die Kontenliste ein !" 
  26. GOSUB Konteneinlesen
  27. CLS
  28. LOCATE 12,26:PRINT "Ich erstelle die Menüleiste !" 
  29.  
  30. Menuinit:
  31.  
  32. MENU OFF
  33. FOR x%=1 TO 14:m%(1,x%)=1:m%(2,x%)=1:NEXT
  34. GOSUB Menuleiste1 : GOSUB Menuleiste2 
  35. GOSUB Konteneinlesen
  36. GOSUB Machkonten
  37. IF sortflag%=0 THEN MENU 2,8,2:MENU 2,9,1::ELSE:MENU 2,8,1:MENU 2,9,2
  38. IF detailflag%=1 THEN MENU 2,5,1:MENU 2,6,2
  39. IF gesamtflag%=1 THEN MENU 2,5,2:MENU 2,6,1
  40. ON MOUSE GOSUB Mousecheck 
  41. ON MENU GOSUB Menuabfrage 
  42. CLS
  43.  
  44. Programmstart:
  45. GOSUB Windowclose3:fakt%=0
  46. GOSUB Tabmaske
  47. GOSUB datum
  48.  
  49. Menucheck: 
  50.  
  51.  IF tagkorflag%=1 OR kontenaktiv%=1 OR fakt%=1 OR printakt%=1 OR mousep%>0 THEN 
  52.    MENU OFF
  53.   ELSE 
  54.    MENU ON
  55.  END IF
  56.  MOUSE ON  
  57.  IF FRE(-1)<23000 THEN GOSUB Outoffmem 
  58.  SLEEP
  59.  IF hlf%=1 THEN
  60.    IF INKEY$<>"" THEN tdr=1:GOSUB Mouseposition
  61.  END IF
  62. GOTO Menucheck
  63.  
  64. Menuabfrage: 
  65.  
  66.  leiste = MENU(0): punkte = MENU(1)
  67.  IF hilfeflag%=1 THEN Hilferoutine
  68.  
  69. Menuwahl: 
  70.  
  71.  MENU OFF: MOUSE OFF
  72.  ON leiste GOTO Larbeit,Lausgabe,Kontoakt,Kontoakt,Kontoakt,Kontoakt,Kontoakt
  73.  
  74. Larbeit:  
  75.  
  76.   ON punkte GOTO Tagein,Tagkor,Zeitmaske,datum,Filtertext,Wae,Datenakt,Konten,Sort,Import,Export,Sysst,Hilfe,Autor,Progende 
  77.   
  78. Lausgabe: 
  79.  
  80.  ON punkte GOTO Tabausgabe,Tabprint,Nix,Msw2,Msw2,Msw2,Msw2,Msw2,Msw2,Msw2,Kontengrafik,Selektieren,Selinv,Selloe           
  81.  
  82. datum:  
  83.  
  84.  windowtext$="Datumeingabe:":GOSUB Openwindow3
  85.  GOSUB Datumeingabe
  86.  GOSUB Windowclose3
  87. RETURN
  88.  
  89. Kontoakt:  
  90.  
  91.  IF eingmod=1 THEN kl=leiste:kp=punkte:eingmod=0:MENU ON:RETURN  
  92.  eingmod=3
  93.  GOSUB Menurefresh 
  94. RETURN
  95.  
  96. Nix:
  97. RETURN
  98.  
  99. Tagkor:
  100.  
  101.  tagkorflag%=1
  102.  GOSUB Tabausgabe
  103. RETURN
  104.  
  105. Tagkor1: 
  106.  
  107.  IF show%(calcnr%)=0 THEN RETURN
  108.  daten$=ds$(show%(calcnr%))
  109.  kl=VAL(LEFT$(daten$,1)):kp=VAL(MID$(daten$,2,1))
  110.  datumchange=1
  111.  datum$=MID$(daten$,4,8)
  112.  komentar$=MID$(daten$,24,LEN(daten$)-32)
  113.  komentar$=LEFT$(komentar$,40)
  114.  betrag$=STR$(VAL(RIGHT$(daten$,10)))
  115.  wtext3$="Tagesereignisse ändern:"
  116.  WINDOW 3,wtext3$,(80,35)-(550,150),0,1
  117.  GOTO Weiter12
  118.  
  119. Tagein: 
  120.  
  121.  MOUSE OFF
  122.  IF ml%=0 THEN
  123.  fehlertext$="Keine Eintragungen möglich. Konten fehlen !"
  124.  GOTO Fehlermeldung
  125.  END IF
  126.  IF anzahl%>=datenmenge-1 THEN
  127.  fehlertext$="Datei voll ! Bitte eine Neue beginnen.":GOTO Fehlermeldung
  128.  END IF
  129.  wtext3$="Tagesereignisse eintragen:(noch"+STR$(datenmenge-1-anzahl%)+" Eintragungen möglich !)"
  130.  WINDOW 3,wtext3$,(80,35)-(550,150),0,1
  131.  LOCATE 7,9 
  132.  PRINT "Bitte ein Konto aus Menuleiste auswählen !"
  133.  MENU ON
  134.  FOR x%=3 TO 7:IF m$(x%,1)<>"" THEN MENU x%,1,0 
  135.  NEXT         
  136.  MENU 1,0,0:MENU 2,0,0
  137.  eingmod=1                              
  138.  WHILE eingmod=1:SLEEP:WEND
  139.  IF eingmod=3 THEN 
  140.  FOR x%=3 TO 7:IF m$(x%,1)<>"" THEN MENU x%,1,m%(x%,1)+1 
  141.  NEXT         
  142.  MENU 1,0,1:MENU 2,0,1
  143.  GOTO Windowclose3
  144.  END IF
  145.  LOCATE 7,9:PRINT SPACE$(50)
  146.  LOCATE 2,25
  147. Weiter12:
  148.  GOSUB Datumeingabe
  149.  IF datum$<dzeitstart$ OR datum$>dzeitende$ THEN Weiter12
  150.  GOSUB Wochentagberechnung
  151.  CLS
  152.  LOCATE 2,11:PRINT "Eintragung für "wt$(wt%)" den "datum$
  153.  center=28-(LEN(m$(kl,kp))+40)/2
  154.  IF tagkorflag%=0 THEN
  155.    IF INSTR(kontoart$(kl,kp),"u")>0 THEN
  156.      uekl=kl:uekp=kp
  157.      LOCATE 4,center:PRINT"Überweisung vom Konto "m$(kl,kp)" ! Bitte 2.Konto wählen"
  158.      MENU ON: eingmod=1: WHILE eingmod=1:SLEEP:WEND
  159.      IF eingmod=3 THEN 
  160.        FOR x%=3 TO 7:IF m$(x%,1)<>"" THEN MENU x%,1,m%(x%,1)+1
  161.        NEXT  
  162.        MENU 1,0,1:MENU 2,0,1
  163.        GOTO Windowclose3
  164.      END IF
  165.      LOCATE 4,2:PRINT SPACE$(70)
  166.      LOCATE 4,center:PRINT"Diese Eingabe wird auf das Konto "m$(kl,kp)" ueberwiesen"
  167.      laenge=36:GOTO Weiter3
  168.    END IF
  169.  END IF
  170.  laenge=40
  171.  LOCATE 4,center:PRINT"Diese Eingabe wird auf das Konto "m$(kl,kp)" verbucht" 
  172.                             
  173. Weiter3:
  174.  LOCATE 6,3:PRINT"Kommentar:":LOCATE 6,47:PRINT"Betrag"
  175.  LOCATE 8,3
  176.  msgs$="":IF tagkorflag%=1 THEN msgs$=komentar$
  177.  type%=0:GOSUB Superinput:komentar$=msgs$
  178.  IF msgs$="" THEN Weiter16
  179.  msgs$=""
  180.  IF tagkorflag%=1 THEN msgs$=betrag$
  181. 122 LOCATE 8,47:laenge=10
  182.  type%=1:GOSUB Superinput:betrag$=msgs$ 
  183.  IF betrag$="" THEN
  184.    IF funktion=9 THEN
  185.      msgs$=STR$(summe)
  186.    ELSE
  187.      msgs$=STR$(rechenwert)
  188.    END IF
  189.    GOTO 122    
  190.  END IF
  191.  IF VAL(betrag$)>=999999 OR VAL(betrag$)<=-999999 THEN 
  192.  LOCATE 8,47:PRINT SPACE$(10):GOTO 122
  193.  END IF
  194.  IF tagkorflag%=1 THEN Tagkorbest
  195.  ttextrl=12:ttextrp=18:ttextfl=12:ttextfp=35:GOSUB Bestaetigung 
  196.  mousep%=1:RETURN
  197. Mp1:
  198.  mousep%=0
  199.  IF fehler=0 THEN 
  200.    IF VAL(betrag$)=0 THEN
  201.      fehlertext$="Beträge von 0.00 "+waehrung$+" sind nicht abspeicherbar !" 
  202.      GOSUB Geisterkiller:GOTO Fehlermeldung
  203.    END IF
  204.  GOSUB Abspeichern
  205.  END IF
  206. Weiter16:
  207.  GOSUB Geisterkiller
  208.  GOTO Windowclose3
  209.  
  210. Geisterkiller:
  211.  
  212.  FOR x%=3 TO 7:IF m$(x%,1)<>"" THEN MENU x%,1,m%(x%,1)+1
  213.  NEXT    
  214.  MENU 1,0,1:MENU 2,0,1
  215. RETURN
  216.  
  217. Tagkorbest:
  218.  
  219.  request%=3
  220.  ttextrl=12:ttextrp=10:ttextwl=12:ttextwp=25:ttextfl=12:ttextfp=40
  221.  GOSUB Bestaetigung:mousep%=2:RETURN
  222. Mp2:
  223.  mousep%=0 
  224.  request%=0
  225.  IF fehler=2 THEN GOSUB Eintragen:GOTO Windowclose3
  226.  IF fehler=0 THEN 
  227.  GOSUB Eintragen:GOSUB Windowclose3:GOTO Sort
  228.  END IF
  229.  tagkorflag%=0:WINDOW OUTPUT 1:GOSUB Listen1:GOTO Windowclose3
  230.  
  231. Eintragen:
  232.  
  233.  kn$=RIGHT$(STR$(kl*10+kp),2)
  234.  ds$(show%(calcnr%))=kn$+" "+datum$+" "+wt$(wt%)+" "+komentar$+"          "+betrag$ 
  235.  WINDOW OUTPUT 1:GOSUB Listen1:WINDOW 3
  236. RETURN
  237.   
  238. Datenakt:
  239.  
  240.  MENU OFF:MOUSE OFF
  241.  WINDOW 3,"Dateien Aktualisieren:",(80,50)-(550,140),0,1
  242.  PALETTE 3,0,0,0
  243.  LOCATE 5,16:PRINT "Bitte Dateinamen eingeben !"            
  244.  LINE (54,50)-(408,68),3,b:LINE (69,54)-(393,64),3,b
  245.  PAINT (55,51),3
  246.  PALETTE 3,r(3),g(3),b(3)
  247.  IF dateiname$="" THEN dateiname$="Haushaltsdaten/"
  248.  altdn$=dateiname$
  249.  LOCATE 8,10:laenge=38:msgs$=dateiname$:GOSUB Superinput:dateiname$=msgs$
  250.  diskfehler=0
  251.  CLOSE #2
  252.  OPEN dateiname$ FOR INPUT AS #2
  253.  CLOSE #2
  254.  IF diskfehler=2 THEN
  255.  diskfehler=0
  256.  GOTO Fehlermeldung
  257.  END IF
  258.  IF diskfehler<1 THEN GOTO Dateiwechsel    ' Datei bereits vorhanden
  259.  WINDOW 3,"Dateien Aktualisieren:",(80,50)-(550,140),0,1
  260.  LOCATE 4,12:PRINT "Ich habe diese Datei nicht gefunden."
  261.  LOCATE 6,12:PRINT "Wollen Sie die Datei neu erstellen ?"
  262.  ttextrl=9:ttextrp=20:ttextfl=9:ttextfp=34:mskip=0:GOSUB Bestaetigung 
  263.  mousep%=3:RETURN
  264. Mp3:
  265.  mousep%=0 
  266.  IF fehler=1 THEN dateiname$=altdn$:GOTO Windowclose3
  267.  
  268. Machedatei:
  269.  
  270.  
  271.  CLS
  272.  PALETTE 3,0,0,0
  273.  LINE (7,36)-(457,52),3,bf
  274.  LOCATE 6,3:COLOR 0,3:PRINT "Die Datei soll vom " 
  275.  LOCATE 6,22:COLOR 1,0:PRINT "          "
  276.  LOCATE 6,33:COLOR 0,3:PRINT" bis " 
  277.  LOCATE 6,38:COLOR 1,0:PRINT "          "
  278.  LOCATE 6,50:COLOR 0,3:PRINT"dauern."
  279.  PALETTE 3,r(3),g(3),b(3):COLOR 1,0
  280.  fehlerpos=9
  281. Weiter5:
  282.  dzeitstart$="86-01-01":dzeitende$="99-12-31"
  283.  LOCATE 6,22:laenge=8:msgs$=zeitstart$:type%=1:GOSUB Superinput
  284.  zeitstart$=msgs$
  285.  checkdat$=dzeitstart$:GOSUB Datumcheck
  286.  IF fehler=1 THEN fehler=0:GOTO Weiter5
  287. Weiter6:
  288.  LOCATE 6,38:laenge=8:msgs$=zeitende$:type%=1:GOSUB Superinput
  289.  zeitende$=msgs$
  290.  checkdat$=dzeitende$:GOSUB Datumcheck
  291.  IF fehler=1 THEN fehler=0:GOTO Weiter6
  292.  IF zeitstart$>=zeitende$ THEN Weiter5
  293.  fehler=3
  294.  ttextrl=10:ttextrp=20:ttextfl=10:ttextfp=34:GOSUB Bestaetigung
  295.  mousep%=4:RETURN
  296. Mp4:
  297.  mousep%=0 
  298.  IF fehler=1 THEN Machedatei
  299.  CLS
  300.  PALETTE 3,0,0,0
  301.  LOCATE 5,9:PRINT "Bitte den Namen der Kontenliste eingeben !"
  302.  LINE (54,50)-(408,68),3,b:LINE (69,54)-(393,64),3,b:PAINT (55,51),3
  303.  PALETTE 3,r(3),g(3),b(3)
  304.  IF Kontenliste$="" THEN Kontenliste$="Haushaltskonten/"
  305.  alkoli$=Kontenliste$
  306.  LOCATE 8,10:laenge=38:msgs$=Kontenliste$:GOSUB Superinput
  307.  Kontenliste$=msgs$
  308.  diskfehler=0
  309.  CLOSE #2
  310.  OPEN Kontenliste$ FOR INPUT AS #2
  311.  CLOSE #2
  312.  IF diskfehler=0 THEN Weiter9
  313.  fehlertext$="Kontenliste nicht vorhanden ! Bitte erstellen."
  314.  dzeitstart$=d0zeitstart$:dzeitende$=d0zeitende$
  315.  Kontenliste$=alkoli$:dateiname$=altdn$
  316. GOTO Fehlermeldung
  317.  
  318. Weiter9:
  319.  diskfehler=0:CLOSE #2
  320.  OPEN dateiname$ FOR OUTPUT AS#2
  321.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Weiter9
  322.  PRINT #2,"00 "zeitstart$" "zeitende$" "Kontenliste$
  323.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Weiter9
  324.  CLOSE #2
  325.  
  326. Dateiwechsel:
  327.  
  328.  WINDOW 3,"Dateiwechsel:",(80,50)-(550,140),0,1
  329.  CLS:LOCATE 6,17:PRINT "Lese Daten, bitte Geduld !" 
  330.  GOSUB Datenein
  331.  CLOSE #2
  332.  IF diskfehler>0 THEN Windowclose3
  333.  diskfehler=0
  334.  Kontenliste$=LEFT$(RIGHT$(ds$(0),LEN(ds$(0))-21),36)
  335.  center=19-LEN(Kontenliste$)/2
  336.  windowtext$="Dateiwechsel:":GOSUB Openwindow3
  337.  LOCATE 6,center:PRINT "Lese Kontenliste "Kontenliste$" ein !"
  338.  OPEN Kontenliste$ FOR INPUT AS #2
  339.  CLOSE #2
  340.  IF diskfehler>0 THEN
  341.    fehlertext$="Erforderliche Kontenliste nicht vorhanden !"
  342.    Kontenliste$=alkoli$
  343.    GOTO Fehlermeldung
  344.  END IF
  345.  GOSUB Konteneinlesen
  346.  GOSUB Machkonten
  347.  GOSUB Windowclose3
  348.  GOSUB Tabmaske
  349. RETURN
  350.  
  351. Abspeichern:
  352.  
  353.  diskfehler=0:CLOSE #2
  354.  OPEN dateiname$ FOR APPEND AS #2
  355.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Abspeichern 
  356.  IF diskfehler>0 THEN
  357.  fehlertext$="Kann nicht Abspeichern. Keine Datei aktuallisiert !"
  358.  GOTO Fehlermeldung
  359.  END IF
  360.  IF INSTR(kontoart$(kl,kp),"-")>0 THEN neg$="-" :ELSE neg$=""
  361.  daten$=RIGHT$(STR$(kl*10+kp),2)+" "+datum$+" "+wt$(wt%)+" "+komentar$+"          "+neg$+betrag$
  362.  anzahl%=anzahl%+1
  363.  ds$(anzahl%)=RIGHT$(daten$,LEN(daten$))            
  364.  PRINT#2,daten$
  365.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Abspeichern
  366.  IF INSTR(kontoart$(uekl,uekp),"u")>0 THEN 
  367.   IF INSTR(kontoart$(uekl,uekp),"-")>0 THEN neg$="-"::ELSE:neg$=""
  368.   daten$=RIGHT$(STR$(uekl*10+uekp),2)+" "+datum$+" "+wt$(wt%)+" (U) "+komentar$+"          "+neg$+betrag$
  369.   PRINT#2,daten$
  370.   uekl=0:uekp=0
  371.   anzahl%=anzahl%+1
  372.   ds$(anzahl%)=RIGHT$(daten$,LEN(daten$))
  373.  END IF
  374.  CLOSE#2
  375. RETURN
  376.  
  377. Tabausgabe:
  378.  
  379.  WINDOW 1:GOSUB Tabkopf
  380.  LINE (36,22)-(625,151),0,bf:LINE(8,36)-(27,138),0,bf  
  381.  tabaktuell=1:tabaktiv=1
  382.  LOCATE 11,23:PRINT"Bitte etwas Geduld ich suche Daten !"
  383.  IF filterflag%=1 THEN
  384.   LOCATE 13,23:PRINT"Achtung !!!!! Filterfunktion aktiv ."
  385.  END IF
  386.  IF sortflag%=0 THEN GOSUB Kontenliste 
  387.  gesamtbe=0  
  388.  z%=0 :bildzeilen=16
  389.  gesamtakt%=0
  390.  ERASE show$,show%,calc%:DIM show$(30),show%(datenmenge),calc%(datenmenge)
  391.  IF tagkorflag%=1 THEN GOSUB Suchrutine2:GOTO Weiter4
  392.  IF monatflag%=1 THEN gesamtakt%=1:GOSUB Suchrutine4:GOTO Weiter4 
  393.  IF gesamtflag%=1  THEN gesamtakt%=1:GOSUB Suchrutine3:GOTO Weiter4
  394.  IF sortflag%=0 THEN GOSUB Suchrutine1  
  395.  IF sortflag%=1 THEN GOSUB Suchrutine2
  396. Weiter4:  
  397.  LOCATE 11,20:PRINT SPACE$(40)
  398.  LOCATE 13,20:PRINT SPACE$(40)
  399.  GOSUB Berechnung :IF z%=0 THEN RETURN
  400.  prozent%=bildzeilen/(z%/100):IF prozent%>100 THEN prozent%=100
  401.  LINE(10,37)-(25,37+prozent%),2,bf:GET(10,37)-(25,37+prozent%),balken%
  402.  mitte=prozent%/2:x=10:yx=37:showstart=1 
  403.  LOCATE 12,20:PRINT SPACE$(40) 
  404.  GOTO Listen1
  405.  
  406. Suchrutine1:    
  407.  
  408.  z%=0 
  409.  FOR y%=0 TO klg%
  410.  FOR x%=1 TO anzahl%
  411.    IF koliste%(y%)=VAL(LEFT$(ds$(x%),2)) THEN 
  412.      d$= MID$(ds$(x%),4,8)
  413.      IF zeitstart$=<d$ AND zeitende$>=d$ THEN
  414.        IF filterflag%=1 THEN
  415.          IF INSTR(ds$(x%),Filtertext$)>0 THEN
  416.            z%=z%+1:show%(z%)=x%:w=VAL(RIGHT$(ds$(x%),10))
  417.            gesamtbe=gesamtbe+w
  418.          END IF
  419.        ELSE
  420.            z%=z%+1:show%(z%)=x%:w=VAL(RIGHT$(ds$(x%),10))
  421.            gesamtbe=gesamtbe+w
  422.        END IF
  423.      END IF      
  424.    END IF
  425.  NEXT x%,y%
  426. RETURN
  427.  
  428. Suchrutine2:   
  429.  
  430.  z%=0
  431.  FOR x%=1 TO anzahl%
  432.    x1%= VAL(LEFT$(ds$(x%),1))
  433.    y1%= VAL(MID$(ds$(x%),2,1))
  434.    IF m%(x1%,y1%)=1 THEN 
  435.      d$= MID$(ds$(x%),4,8)
  436.      IF zeitstart$=<d$ AND zeitende$>=d$ THEN
  437.        IF filterflag%=1 THEN
  438.          IF INSTR(ds$(x%),Filtertext$)>0 THEN 
  439.            z%=z%+1:show%(z%)=x%:w=VAL(RIGHT$(ds$(x%),10))
  440.            gesamtbe=gesamtbe+w
  441.          END IF  
  442.        ELSE
  443.            z%=z%+1:show%(z%)=x%:w=VAL(RIGHT$(ds$(x%),10))
  444.            gesamtbe=gesamtbe+w
  445.        END IF
  446.      END IF
  447.    END IF
  448.  NEXT 
  449. RETURN
  450.  
  451. Suchrutine3: 
  452.  
  453.  ERASE gges:DIM gges(7,6)   
  454.    FOR x%=1 TO anzahl%
  455.    gh%=VAL(LEFT$(ds$(x%),1)):gu%=VAL(MID$(ds$(x%),2,1))
  456.    IF m%(gh%,gu%)=1 THEN
  457.      d$= MID$(ds$(x%),4,8)
  458.      IF zeitstart$=<d$ AND zeitende$>=d$ THEN
  459.        IF filterflag%=1 THEN
  460.          IF INSTR(ds$(x%),Filtertext$)>0 THEN 
  461.            w=VAL(RIGHT$(ds$(x%),10)):gges(gh%,gu%)=gges(gh%,gu%)+w
  462.            gesamtbe=gesamtbe+w:knum$(y%)=LEFT$(ds$(x%),2)
  463.            END IF
  464.          ELSE
  465.            w=VAL(RIGHT$(ds$(x%),10)):gges(gh%,gu%)=gges(gh%,gu%)+w
  466.            gesamtbe=gesamtbe+w:knum$(y%)=LEFT$(ds$(x%),2)  
  467.      END IF
  468.    END IF
  469.   END IF
  470.  NEXT x%
  471.  z%=0
  472.  GOSUB Wochentagberechnung
  473.  FOR y%=3 TO 7
  474.  FOR x%=1 TO 6
  475.  IF gges(y%,x%)<>0 THEN 
  476.  z%=z%+1
  477.  show$(z%)=RIGHT$(STR$(y%),1)+RIGHT$(STR$(x%),1)+" "+datum$
  478.  show$(z%)=show$(z%)+" "+wt$(wt%)+" "+m$(y%,x%)+" Gesamt "
  479.  show$(z%)=show$(z%)+zeitstart$+" bis "+zeitende$
  480.  show$(z%)=show$(z%)+"          "+STR$(gges(y%,x%))   
  481.  END IF
  482.  NEXT x%,y% 
  483. RETURN 
  484.  
  485. Suchrutine4:  
  486.  
  487.  jahre%=0
  488.  FOR x%=VAL(LEFT$(zeitstart$,2)) TO VAL(LEFT$(zeitende$,2))
  489.  jahre%=jahre%+1
  490.  NEXT 
  491.  IF jahre%>4 THEN RETURN
  492.  ERASE show$:DIM show$(12+(jahre%*12))
  493.  ERASE mges:DIM mges(jahre%-1,12)
  494.  FOR x%=1 TO anzahl%   
  495.      IF m%(VAL(LEFT$(ds$(x%),1)),VAL(MID$(ds$(x%),2,1)))=1 THEN
  496.      d$= MID$(ds$(x%),4,8)
  497.      IF zeitstart$=<d$ AND zeitende$>=d$ THEN
  498.        IF filterflag%=1 THEN
  499.          IF INSTR(ds$(x%),Filtertext$)>0 THEN 
  500.            w=VAL(RIGHT$(ds$(x%),10))
  501.            mon%=VAL(MID$(d$,4,2)):jahr%=VAL(LEFT$(d$,2))-VAL(LEFT$(zeitstart$,2))
  502.            mges(jahr%,mon%)=mges(jahr%,mon%)+w
  503.            gesamtbe=gesamtbe+w
  504.          END IF
  505.        ELSE
  506.            w=VAL(RIGHT$(ds$(x%),10))
  507.            mon%=VAL(MID$(d$,4,2)):jahr%=VAL(LEFT$(d$,2))-VAL(LEFT$(zeitstart$,2))
  508.            mges(jahr%,mon%)=mges(jahr%,mon%)+w
  509.            gesamtbe=gesamtbe+w
  510.        END IF
  511.      END IF   
  512.    END IF
  513.  NEXT x%           
  514.  z%=0
  515.  GOSUB Wochentagberechnung
  516.  FOR x%=0 TO jahre%-1
  517.  FOR y%=1 TO 12
  518.  IF mges(x%,y%)<>0 THEN 
  519.  z%=z%+1
  520.  show$(z%)="00 "+datum$+" "+wt$(wt%)+" Monatliche Abrechnung für "
  521.  show$(z%)=show$(z%)+monat$(y%)+STR$(VAL(LEFT$(zeitstart$,2))+x%)
  522.  show$(z%)=show$(z%)+"           "+STR$(mges(x%,y%))   
  523.  END IF
  524.  NEXT y%,x%
  525. RETURN 
  526.  
  527.  
  528. Filtertext:
  529.  
  530.  WINDOW 3,"Daten Filter",(50,55)-(580,123),0,1
  531.  meldung$="Bitte Text nach dem du suchen willst eingeben !"
  532.  center=34-(LEN(meldung$)/2)
  533.  LOCATE 2,center :PRINT meldung$ 
  534.  LINE (60,19)-(470,36),3,b:LINE(70,21)-(460,34),3,b:PAINT (62,25),3
  535.  LOCATE 4,11:laenge=40:msgs$=Filtertext$
  536.  type%=0:GOSUB Superinput:Filtertext$=msgs$
  537.  IF Filtertext$="" THEN Windowclose3
  538.  ttextrl=7:ttextrp=23:ttextfl=7:ttextfp=40:GOSUB Bestaetigung
  539.  mousep%=5:RETURN
  540. Mp5:
  541.  mousep%=0  
  542.  IF fehler=1 THEN Filtertext$=""
  543. GOTO Windowclose3
  544.  
  545. Selektieren:
  546.    
  547.  x%=0 :ok%=0
  548.  WHILE x%<=z% 
  549.  x%=x%+1 
  550.  IF calc%(x%)=1 THEN ok%=1
  551.  WEND 
  552.  IF ok%=0 THEN
  553.  fehlertext$="Ich habe keine Selektierten Daten gefunden !"
  554.  GOTO Fehlermeldung
  555.  END IF
  556.  LINE (36,22)-(625,151),0,bf:LINE(8,36)-(27,138),0,bf  
  557.  LOCATE 11,23:PRINT"Bitte Geduld ich selektiere Daten !"
  558.  selektflag=1
  559.  sz%=1:gesamtbe=0
  560.  FOR x%=1 TO z%
  561.  IF gesamtakt%=0 THEN
  562.    IF calc%(x%)=1 THEN
  563.    show%(sz%)=show%(x%) 
  564.    gesamtbe=gesamtbe+VAL(RIGHT$(ds$(show%(x%)),10)) 
  565.    sz%=sz%+1 
  566.    END IF
  567.  END IF
  568.  IF gesamtakt%=1 THEN
  569.    IF calc%(x%)=1 THEN
  570.    show$(sz%)=show$(x%)
  571.    gesamtbe=gesamtbe+VAL(RIGHT$(show$(x%),10))
  572.    sz%=sz%+1
  573.    END IF
  574.  END IF
  575.  NEXT 
  576.  IF gesamtakt%=0 THEN
  577.    FOR x%=sz% TO z%:show%(x%)=0:NEXT:z%=sz%-1 
  578.   ELSE
  579.    FOR x%=sz% TO z%:show$(x%)="":NEXT:z%=sz%-1
  580.  END IF
  581.  ERASE calc% :DIM calc%(datenmenge)
  582. GOTO Weiter4
  583.    
  584. Selloe:
  585.  
  586.  ERASE calc%:DIM calc%(datenmenge)
  587.  GOSUB Listen1
  588. RETURN
  589.  
  590. Selinv:
  591.  
  592.  FOR x%=1 TO z%:calc%(x%)=1-calc%(x%):NEXT
  593.  GOSUB Listen1
  594. RETURN 
  595.  
  596. Listen:
  597.  
  598.  showstart=INT((yx-37)*(z%/100))
  599.  IF showstart<1 OR yx<39 THEN showstart=1
  600.  IF prozent%<100 THEN
  601.  IF yx+prozent%>136 THEN showstart=z%-(bildzeilen-1)
  602.  END IF
  603. Listen1:
  604.  MOUSE OFF
  605.  LINE(35,22)-(626,151),0,bf:calcpos%=0
  606.  FOR calcnr%=showstart TO showstart+bildzeilen-1
  607.  GOSUB Listenprint
  608.  calcpos%=calcpos%+1
  609.  NEXT
  610.  summe=0:rechenwert=gesamtbe:calcmodus%=1
  611. RETURN 
  612.  
  613. Listenprint:
  614.  
  615.  IF calc%(calcnr%)=1 THEN COLOR 2::ELSE COLOR 1
  616.  LOCATE 4+calcpos%,6
  617.  IF gesamtakt%=0 THEN 
  618.    IF show%(calcnr%)<>0 THEN
  619.    rechenwert=VAL(RIGHT$(ds$(show%(calcnr%)),10))
  620.    texti$=MID$(ds$(show%(calcnr%)),3,LEN(ds$(show%(calcnr%)))-12)
  621.    CALL Text (WINDOW(8),SADD(texti$),LEN(texti$))
  622.    LOCATE 4+calcpos%,68:PRINT USING "#######.##";rechenwert
  623.    END IF
  624.  ELSE
  625.    IF show$(calcnr%)<>"" THEN
  626.    rechenwert=VAL(RIGHT$(show$(calcnr%),10))
  627.    texti$=MID$(show$(calcnr%),3,LEN(show$(calcnr%))-12)
  628.    CALL Text (WINDOW(8),SADD(texti$),LEN(texti$))   
  629.    LOCATE 4+calcpos%,68:PRINT USING "#######.##";rechenwert
  630.    END IF
  631.  END IF
  632.  COLOR 1
  633. RETURN
  634.  
  635. Korrbalken:
  636.  
  637.  PUT (10,yx),balken%
  638.  yx=(showstart-1)/z%*100+37
  639.  PUT (10,yx),balken%
  640. RETURN
  641.  
  642. Scrolldown:
  643.  
  644.  IF showstart<=1 THEN RETURN
  645.  showstart=showstart-1
  646.  GOSUB Korrbalken
  647.  calcpos%=0:calcnr%=showstart
  648.  SCROLL (36,24)-(625,151),0,8
  649.  GOSUB Listenprint
  650. RETURN
  651.  
  652.  
  653. Scrollup:
  654.  
  655.  IF showstart+bildzeilen-1>=z% THEN RETURN
  656.  showstart=showstart+1
  657.  GOSUB Korrbalken
  658.  calcpos%=bildzeilen-1:calcnr%=showstart+bildzeilen-1
  659.  SCROLL (36,24)-(625,151),0,-8
  660.  GOSUB Listenprint
  661. RETURN
  662.  
  663.  
  664.  
  665. Mousecheck:
  666.  
  667.  MENU OFF:x=MOUSE(0) 
  668.  IF ed%=1 THEN Mcp
  669.  IF kontenaktiv%=1 THEN Kontenmousecheck
  670.  IF mousep%>0 THEN Mouseposition
  671.  IF fakt%=1 THEN fakt%=0:GOTO Windowclose3
  672.  IF hilfeflag%=1 THEN hilfeflag%=0:MOUSE STOP :GOTO Windowclose3
  673.  IF WINDOW(0)=1 AND tabaktiv<>0 THEN
  674.  WINDOW 1 
  675.  IF MOUSE(1)>10 AND MOUSE(1)<25 AND MOUSE(2)>37 AND MOUSE(2)<137 THEN GOSUB Showzoom:GOTO Listen
  676. Scrollrepeat: 
  677.  IF MOUSE(3)>10 AND MOUSE(3)<25 THEN
  678.    IF MOUSE(4)>27 AND MOUSE(4)<37 THEN GOSUB Scrolldown
  679.    IF MOUSE(4)>137 AND MOUSE(4)<147 THEN GOSUB Scrollup   
  680.    IF MOUSE(0)=-1 THEN Scrollrepeat
  681.    RETURN
  682.  END IF
  683.  IF MOUSE(2)>157 AND MOUSE(2)<171 THEN Rechnerfunktion
  684.  IF MOUSE(2)>=24 AND MOUSE(2)<=150 AND MOUSE(1)>40 AND MOUSE(1)<620 THEN Rechner 
  685.  END IF
  686.  IF WINDOW(0)=2 AND grafikaktiv%=1 THEN
  687.  WINDOW 2
  688.  MOUSE STOP:GOTO Grafikselekt
  689.  END IF
  690. RETURN
  691.  
  692. Rechnertasten:
  693.  
  694.  COLOR 0,1
  695.  LOCATE 21,3:PRINT "ALT" :LOCATE 21,10:PRINT "CE":LOCATE 21,16:PRINT "IN"
  696.  LOCATE 21,22:PRINT "OUT":LOCATE 21,29:PRINT "+":LOCATE 21,35:PRINT "-";
  697.  PRINT PTAB(324)"*":LOCATE 21,48:PRINT "/":LOCATE 21,54:PRINT "="
  698.  COLOR 1,0
  699.  LOCATE 21,58:PRINT "Gesamt "waehrung$
  700. RETURN
  701.  
  702. Berechnung:
  703.  
  704.  LOCATE 21,68:PRINT USING "#######.##";gesamtbe:rechenwert=gesamtbe
  705.  IF tabaktuell=2 OR z%<>0 THEN RETURN
  706.  tagkorflag%=0
  707.  fehlertext$="Ich habe leider keine Daten gefunden"
  708.  IF jahre%>4 THEN jahre%=0:fehlertext$="Monatsabrechnungen können nur über 4 Jahre gehen !"
  709. GOTO Fehlermeldung
  710.  
  711. Showzoom:
  712.  
  713.  IF MOUSE(0)<=-1 THEN Weiter2
  714.  IF MOUSE(0)=0 THEN RETURN
  715. GOTO Showzoom
  716.  
  717. Weiter2:
  718.  IF MOUSE(1)< 0 OR MOUSE(1)>100 THEN Showzoom  
  719.  IF ABS(yx-(MOUSE(2)-mitte)) < 1 THEN Showzoom
  720.  GOSUB Movebalken
  721. GOTO Showzoom
  722.  
  723.  
  724. Movebalken:
  725.  PUT(10,yx),balken%
  726.  yx=MOUSE(2)-mitte
  727.  IF MOUSE(2)-mitte<37 THEN yx=37
  728.  IF MOUSE(2)+mitte>137 THEN yx=137-mitte*2
  729.  PUT(10,yx),balken%
  730. RETURN
  731.  
  732. Datumeingabe:
  733.  
  734.  LOCATE 9,20:PRINT SPACE$(20)
  735.  LOCATE 6,10:PRINT"Bitte Datum im Format JJ-MM-TT eingeben"
  736.  LOCATE 7,32:laenge=8:msgs$=datum$:type%=1
  737.  GOSUB Superinput:datum$=msgs$
  738.  IF datum$="" THEN fehler=3 :RETURN
  739.  fehlerpos=9:checkdat$=datum$
  740.  GOSUB Datumcheck:datum$=checkdat$
  741.  IF fehler=1 THEN fehler=0 :GOTO Datumeingabe
  742.  LOCATE 6,10:PRINT SPACE$(40)
  743.  LOCATE 7,30:PRINT SPACE$(20)
  744.  GOSUB Wochentagberechnung
  745.  MENU 1,4,1,"Datum ändern ("+datum$+") "
  746. RETURN
  747.  
  748. Wochentagberechnung:
  749.  
  750.  jj=1900+VAL(LEFT$(datum$,2)):mm=VAL(MID$(datum$,4,2)):tt=VAL(RIGHT$(datum$,2))
  751.  IF mm<3 THEN smj=(366+mm)-(INT(365.25*jj)-INT(365.25*(jj-1)))::ELSE:smj=0
  752.  sj=INT(365.25*jj)-INT(jj/100)+INT(jj/400)+31*(mm-1)-INT(0.4*mm+2.3-smj)+tt 
  753.  jj=sj+1721060:wt%=jj-INT(jj/7)*7 
  754. RETURN
  755.   
  756. Menuleiste1:
  757.  MENU 1,0,1,"Arbeit"
  758.  MENU 1,1,1,"Tagesereignisse eingeben"
  759.  MENU 1,2,1,"Tagesereignisse ändern  "
  760.  MENU 1,3,1,"Zeitmaske eingeben      "
  761.  MENU 1,4,1,"Datum ändern ("+datum$+") " 
  762.  MENU 1,5,1,"Filtertext eingeben     " 
  763.  MENU 1,6,1,"Währungszeichen ändern  "
  764.  MENU 1,7,1,"Dateien verwalten       "
  765.  MENU 1,8,1,"Kontenlisten verwalten  "
  766.  MENU 1,9,1,"Daten sortieren         "
  767.  MENU 1,10,1,"Daten importieren       "
  768.  MENU 1,11,1,"Daten exportieren       "
  769.  MENU 1,12,1,"Systemstatus            "
  770.  MENU 1,13,1,"Hilfe  ( Beschreibung ) "
  771.  MENU 1,14,1,"Autor !!!!!!!!!!!!!!!!! "
  772.  MENU 1,15,1,"Programm beenden        "
  773. RETURN
  774.  
  775. Menuleiste2:
  776.  MENU 2,0,1,"Ausgabe"
  777.  MENU 2,1,m%(2,1),  "Tabelle Bildschirm   "
  778.  MENU 2,2,m%(2,2),  "Tabelle Drucken      "
  779.  MENU 2,3,m%(2,3),  "====================="
  780.  MENU 2,4,m%(2,4),  "  Alle Konten AN/AUS "
  781.  MENU 2,5,m%(2,5),  "  Gesamt             "
  782.  MENU 2,6,m%(2,6),  "  Detailiert         "
  783.  MENU 2,7,m%(2,7),  "  Filter     EIN/AUS "
  784.  MENU 2,8,m%(2,8),  "  Sortiert n. Konten "
  785.  MENU 2,9,m%(2,9),  "  Sortiert n. Datum  "
  786.  MENU 2,10,m%(2,10),"  Monatsabrechnung   "
  787.  MENU 2,11,m%(2,11),"Grafikausgabe        "
  788.  MENU 2,12,m%(2,12),"Selektieren          "
  789.  MENU 2,13,m%(2,13),"Selekt invertieren   "  
  790.  MENU 2,14,m%(2,14),"Selekt löschen       " 
  791. RETURN
  792.  
  793.  
  794. Machkonten:
  795.  
  796.  allkonflag%=0:MENU 2,4,1
  797.  FOR x%=3 TO 7:MENU x%,0,0,"":NEXT
  798.  FOR leiste=3 TO ml%+2 :MENU leiste,0,1,m$(leiste,1) 
  799.  MENU leiste,1,m%(leiste,1)+1,"  "+LEFT$(m$(leiste,1)+"          ",9)
  800.  FOR x%=2 TO ma%(leiste)
  801.  MENU leiste,x%,m%(leiste,x%)+1,"  "+LEFT$(m$(leiste,x%)+"          ",9)
  802.  NEXT x%,leiste
  803.  
  804. RETURN
  805.  
  806. Msw2:
  807.   
  808.  IF punkte=5 THEN 
  809.    gesamtflag%=1:detailflag%=0:monatflag%=0
  810.    MENU 2,5,2:MENU 2,6,1:MENU 2,10,1 
  811.  END IF
  812.  IF punkte=6 THEN 
  813.    detailflag%=1:gesamtflag%=0:monatflag%=0
  814.    MENU 2,5,1:MENU 2,6,2:MENU 2,10,1
  815.  END IF  
  816.  IF punkte=10 THEN 
  817.    monatflag%=1:gesamtflag%=0:detailflag%=0
  818.    MENU 2,10,2:MENU 2,6,1:MENU 2,5,1
  819.  END IF  
  820.  IF punkte=8 THEN sortflag%=0:MENU 2,8,2:MENU 2,9,1
  821.  IF punkte=7 THEN filterflag%=1-filterflag%:MENU 2,7,filterflag%+1
  822.  IF punkte=9 THEN sortflag%=1:MENU 2,8,1:MENU 2,9,2
  823.  IF punkte=4 THEN 
  824.    allkonflag%=1-allkonflag%:tabaktuell=2-allkontenflag%*2:MENU 2,4,allkonflag%+1
  825.    tabaktuell=0
  826.    FOR x%=3 TO ml%+2
  827.    FOR y%=1 TO ma%(x%)
  828.    IF m$(x%,y%)<>"" THEN m%(x%,y%)=allkonflag%:MENU x%,y%,allkonflag%+1
  829.    NEXT y%,x%
  830.  END IF
  831. RETURN
  832.  
  833.   
  834. Menurefresh:
  835.    
  836.  tabaktuell=0
  837.  IF punkte<2 THEN 
  838.    m%(leiste,1)=1-m%(leiste,1)
  839.    FOR x%=1 TO ma%(leiste)
  840.      m%(leiste,x%)=m%(leiste,1)
  841.      IF m$(leiste,x%)<>"" THEN MENU leiste,x%,m%(leiste,x%)+1
  842.    NEXT
  843.   ELSE:
  844.    m%(leiste,punkte)=1-m%(leiste,punkte)
  845.    IF m$(leiste,punkte)<>"" THEN MENU leiste,punkte,m%(leiste,punkte)+1 
  846.  END IF
  847. RETURN
  848.  
  849. Kontenliste:
  850.  
  851.  ERASE koliste%:ERASE koliste$:DIM koliste$(30):DIM koliste%(30)
  852.  klg%=0
  853.  FOR x%=3 TO ml%+2:FOR y%=2 TO ma%(x%)
  854.  IF m%(x%,y%)=1 THEN
  855.  klg%=klg%+1
  856.  koliste$(klg%)=m$(x%,y%)
  857.  koliste%(klg%)=x%*10+y% 
  858.  END IF
  859.  NEXT y%,x%
  860. RETURN
  861.  
  862. Zeitmaske:
  863.  
  864.  WINDOW 3,"Zeitmaske eingeben",(80,35)-(550,150),0,1  
  865.  LOCATE 3,8:PRINT "Aktuelle Zeitmaske von "zeitstart$" bis "zeitende$" 
  866. 1200 fehler=0: LOCATE 6,14:PRINT "Ausgaben vom (JJ-MM-TT) ";
  867.  laenge=8:msgs$=zeitstart$:type%=1:GOSUB Superinput :checkdat$=msgs$
  868.  IF checkdat$="" THEN Windowclose3 
  869.  fehlerpos=10:GOSUB Datumcheck
  870.  IF fehler=1 THEN GOTO 1200
  871.  zeitstart$=msgs$
  872. 1201 fehler=0: LOCATE 8,23:PRINT "bis (JJ-MM-TT) ";
  873.  laenge=8:msgs$=zeitende$:type%=1:GOSUB Superinput :checkdat$=msgs$
  874.  IF checkdat$="" THEN Windowclose3 
  875.  fehlerpos=10:GOSUB Datumcheck
  876.  IF fehler=1 THEN GOTO 1201
  877.  zeitende$=msgs$
  878.  ttextrl=12:ttextrp=18:ttextfl=12:ttextfp=35:GOSUB Bestaetigung
  879.  mousep%=6:RETURN
  880. Mp6:
  881.  mousep%=0 
  882.  IF fehler=1 THEN GOTO Zeitmaske
  883.  WINDOW 1:GOSUB Tabkopf
  884.  GOSUB Systemsetsave
  885. GOTO Windowclose3
  886.  
  887.  
  888. Datumcheck: 
  889.  
  890.  jj$=(LEFT$(checkdat$,2)):mm$=(MID$(checkdat$,4,2)):tt$=(RIGHT$(checkdat$,2))
  891.  jj=VAL(jj$):mm=VAL(mm$):tt=VAL(tt$)
  892.  IF LEN(checkdat$)>8 OR LEN(checkdat$)<8 THEN Datumfehler
  893.  IF MID$(checkdat$,3,1)<> "-" OR MID$(checkdat$,6,1)<> "-" THEN Datumfehler
  894.  IF checkdat$<dzeitstart$ OR checkdat$>dzeitende$ THEN Datumfehler
  895.  IF jj<80 OR jj>99 THEN Datumfehler
  896.  IF mm<1 OR mm>12 THEN Datumfehler
  897.  IF tt<1 OR tt>31 THEN Datumfehler
  898. RETURN
  899.  
  900. Datumfehler:
  901.  
  902.  fehler =1 
  903.  LOCATE fehlerpos,5:PRINT SPACE$(40)
  904.  LOCATE fehlerpos,24:PRINT"Datum falsch"
  905.  FOR x=1 TO 1000:NEXT 
  906.  LOCATE fehlerpos,24:PRINT SPACE$(13) 
  907. RETURN
  908.  
  909. Mouseclick:
  910.  
  911.  MOUSE OFF
  912.  dummy=MOUSE(0)
  913.  WHILE MOUSE(0)<>-1:SLEEP:WEND 
  914.  dummy=MOUSE(3):dummy=MOUSE(3)
  915.  MOUSE ON
  916. RETURN
  917.  
  918. Ende:
  919.  
  920. GOSUB Windowclose3:CLS:LIBRARY CLOSE:SYSTEM
  921.  
  922. Progende:
  923.  
  924.  windowtext$="Programm beenden :":GOSUB Openwindow3
  925.  LOCATE 4,25:PRINT "Good bye !"
  926.  ttextrl=7:ttextrp=18:ttextfl=7:ttextfp=35:GOSUB Bestaetigung
  927.  mousep%=7:RETURN
  928. Mp7:
  929.  mousep%=0  
  930.  IF fehler=0 THEN Ende
  931. GOTO Windowclose3
  932.  
  933. Operationsmeldung:
  934.  
  935.  WINDOW CLOSE 3
  936.  WINDOW 3,"Operationsmeldung",(122,80)-(512,118),0,1 
  937.  center=25-(LEN(operationstext$)/2)
  938.  LOCATE 3,center :PRINT operationstext$ 
  939.  IF flag=1 THEN flag=0:RETURN
  940.  GOSUB Mouseclick
  941. GOTO Windowclose3
  942.  
  943. Fehlermeldung:
  944.   
  945.  SOUND 1500,2,255,3:fakt%=1
  946.  WINDOW 3,"Fehlerdiagnose",(82,80)-(552,120),0,1 
  947.  center1=1
  948.  center=30-(LEN(fehlertext$)/2)
  949.  IF fehlertext1$<>"" THEN center1=30-(LEN(fehlertext1$)/2)
  950.  LOCATE 3,center :COLOR 2:PRINT fehlertext$:COLOR 1 
  951.  LOCATE 4,center1:COLOR 2:PRINT fehlertext1$:COLOR 1
  952.  fehlertext1$="":fehlertext$=""
  953.  fehlerflag=1  
  954.  IF diskfehler=4 THEN GOSUB Mouseclick
  955. RETURN
  956.  
  957.  
  958. Fehlerdiagnose:
  959.  
  960. IF ERR=61 THEN 
  961.  fehlertext$="Diskette voll ! Bitte auf DIESER Platz schaffen !"
  962.  diskfehler=4
  963.  RESUME NEXT
  964. END IF
  965.  
  966. IF ERR=70 THEN
  967.   fehlertext$="Ihre Diskette ist schreibgeschützt."
  968.   fehlertext1$="Bitte Schreibschutz entfernen !"
  969.   diskfehler=4
  970.   RESUME NEXT
  971. END IF  
  972.  
  973. IF ERR=53 THEN 
  974. fehlertext$="Ich kann diese Datei nicht finden !"
  975. diskfehler=1:RESUME NEXT
  976. END IF
  977.  
  978. IF ERR=68 THEN 
  979.  fehlertext$="Mit dem Drucker stimmt etwas nicht !"
  980.  druckfehler=1
  981.  RESUME NEXT
  982. END IF
  983.  
  984. IF ERR=6 OR ERR=68 OR ERR=11 OR ERR=58 THEN RESUME NEXT
  985. IF ERR=57 THEN RESUME Windowclose3
  986.  
  987. IF ERR=23 OR ERR=15 THEN 
  988.  fehlertext$="Schadhafte Datei ! (Korrigieren mit 'Ed')"
  989.  GOSUB Fehlermeldung
  990.  diskfehler=2 
  991.  RESUME Windowclose3
  992. END IF
  993.  
  994. IF ERR=64 THEN 
  995.  fehlertext$="Falscher Dateiname !"
  996.  GOSUB Fehlermeldung
  997.  diskfehler=1:CLOSE #2
  998.  RESUME NEXT
  999. END IF
  1000.  
  1001. IF ERR=5 OR ERR=52 THEN 
  1002.  diskfehler=2:CLOSE #2
  1003.  fehlertext$="Falsche Dateinummer"
  1004.  RESUME NEXT
  1005. END IF
  1006.  
  1007. IF ERR=55 THEN CLOSE #2:CLOSE #3:RESUME NEXT
  1008. IF ERR=14 OR ERR=7 THEN RESUME Outoffmem
  1009. GOTO Guru
  1010.  
  1011. Tabmaske: 
  1012.  
  1013.  GOSUB Screendown
  1014.  CLS
  1015.  LINE(3,21)-(32,152),3,b:LINE(4,21)-(31,152),3,b 
  1016.  FOR x=1 TO 2  
  1017.   LINE(5-x,5-x)-(625+x,17+x),3,b
  1018.   LINE(5-x,156-x)-(625+x,170+x),3,b
  1019.   LINE(33+x,21)-(625+x,152),3,b  
  1020.  NEXT
  1021.  y=158:y1=168:FOR x=10 TO 410 STEP 50 
  1022.  LINE(x,y)-(x+35,y1),1,bf:LINE (x,y)-(x+35,y1),3,b:LINE(x+1,y)-(x+34,y1),3,b
  1023.  NEXT
  1024.  LINE(7,35)-(28,139),3,b:PAINT(6,33),1,3  
  1025.  LINE(15,31)-(21,34),0,bf:LINE(11,31)-(18,28),0:LINE -(25,31),0:LINE -(11,31),0
  1026.  LINE(15,140)-(21,143),0,bf:LINE(11,143)-(18,146),0:LINE -(25,143),0:LINE -(11,143),0 
  1027.  PAINT(18,30),0:PAINT(18,144),0
  1028.  tabaktiv=1
  1029.  GOSUB Rechnertasten
  1030.  GOSUB Tabkopf
  1031.  GOSUB Bildein
  1032.  GOSUB Screenup
  1033. RETURN
  1034.  
  1035. Tabkopf:
  1036.  
  1037.  LOCATE 2,3:PRINT dateiname$
  1038.  LOCATE 2,37:PRINT "Aktuelle Zeitmaske: "zeitstart$" bis "zeitende$
  1039. RETURN 
  1040.  
  1041. Bildein:
  1042.  
  1043.  speed=10 
  1044.  FOR y%=speed TO 1 STEP-1  
  1045.  FOR x%=0 TO 7
  1046.  PALETTE x%,r(x%)/y%,g(x%)/y%,b(x%)/y%
  1047.  NEXT x%,y%  
  1048. RETURN
  1049.  
  1050. Bildaus:
  1051.  
  1052.  speed=1000 
  1053.  FOR y%=1 TO speed STEP 100  
  1054.  FOR x%=0 TO 7
  1055.  PALETTE x%,r(x%)/y%,g(x%)/y%,b(x%)/y% 
  1056.  NEXT x%,y%
  1057. RETURN
  1058.  
  1059. Rechner:
  1060.  
  1061.  calcpos%=INT((MOUSE(2)-24)/8) 
  1062.  calcnr%=showstart+calcpos%:calc%(calcnr%)=1-calc%(calcnr%)
  1063.  IF tagkorflag%=1 THEN Tagkor1
  1064.  GOSUB Listenprint
  1065.  GOSUB Summenprint
  1066. RETURN
  1067.  
  1068. Summenprint:
  1069.  
  1070.  IF rechenwert<-999999 OR rechenwert>9999999 THEN fehler=1
  1071.  IF summe<-999999 OR summe>9999999 THEN fehler=1
  1072.  IF fehler=1 THEN
  1073.   LOCATE 21,68:PRINT SPACE$(10):LOCATE 21,71 :PRINT "ERROR" :fehler=0 
  1074.   IF funktion<10 THEN y0=158:y1=168:x=50*(funktion-1)+10:LINE(x,y0)-(x+35,y1),3,b
  1075.   summe=0:rechenwert=0 
  1076.   RETURN
  1077.  END IF
  1078.  IF calcmodus%<>0 THEN 
  1079.  LOCATE 21,68:PRINT USING "#######.##";rechenwert
  1080.  ELSE
  1081.  LOCATE 21,68:PRINT USING "#######.##";summe
  1082.  END IF
  1083. RETURN 
  1084.  
  1085. Rechnerfunktion:
  1086.  
  1087.  funktion=INT((MOUSE(1)-5)/50+1)
  1088.   IF funktion>9 THEN
  1089.    LOCATE 21,68:PRINT SPACE$(10):LOCATE 21,68:laenge=10
  1090.    type%=1:msgs$="":GOSUB Superinput
  1091.    rechenwert=VAL(msgs$)  
  1092.    IF calcmodus%=0 THEN calcmodus%=1
  1093.    GOSUB Summenprint
  1094.    RETURN
  1095.  END IF 
  1096.  IF funktion<10 THEN
  1097.  y0=158:y1=168:x=50*(funktion-1)+10:LINE(x,y0)-(x+35,y1),2,b
  1098.  END IF
  1099.  IF funktion=1 THEN rechenwert=gesamtbe:GOSUB Summenprint:GOTO Weiter29
  1100.  IF funktion=2 THEN Loeschen
  1101.  IF funktion=3 THEN 
  1102.    IF calcmodus%<>0 THEN speicherwert=rechenwert::ELSE:speicherwert=summe
  1103.  END IF  
  1104.  IF funktion=4 THEN rechenwert=speicherwert:GOSUB Summenprint:GOTO Weiter29
  1105.  IF funktion<10 THEN
  1106.      IF calcmodus%=1 THEN summe=summe+rechenwert  
  1107.      IF calcmodus%=2 THEN summe=summe-rechenwert  
  1108.      IF calcmodus%=3 THEN summe=summe*rechenwert  
  1109.      IF calcmodus%=4 THEN 
  1110.        IF rechenwert=0 THEN
  1111.          fehler=1 :GOSUB Summenprint :RETURN
  1112.        END IF
  1113.        summe=summe/rechenwert  
  1114.      END IF
  1115.      rechenwert=0
  1116.      calcmodus%=0
  1117.      GOSUB Summenprint
  1118.  END IF
  1119.  IF funktion>4 AND funktion<9 THEN calcmodus%=funktion-4
  1120. Weiter29:
  1121.  IF funktion<10 THEN
  1122.  y0=158:y1=168:x=50*(funktion-1)+10:LINE(x,y0)-(x+35,y1),3,b
  1123.  END IF
  1124. RETURN
  1125.  
  1126. Loeschen:
  1127.  
  1128.  calcmodus%=1
  1129.  IF funktion<9 THEN
  1130.  y0=158:y1=168:x=50*(funktion-1)+10:LINE(x,y0)-(x+35,y1),3,b
  1131.  END IF
  1132.  rechenwert=0:summe=0:GOSUB Summenprint 
  1133. RETURN
  1134.  
  1135. Superinput:
  1136.  
  1137.  WHILE INKEY$<>"":WEND              
  1138.  GOSUB Spacekiller
  1139.  msgs$=LEFT$(msgs$,laenge)
  1140.  GOSUB Editor
  1141.  GOSUB Spacekiller 
  1142.  type%=0
  1143. RETURN
  1144.  
  1145. Spacekiller:
  1146.  
  1147.  IF msgs$=" " OR msgs$="" THEN msgs$="":RETURN
  1148.  WHILE MID$(msgs$,LEN(msgs$),1)=" " AND LEN(msgs$)>1
  1149.  msgs$=LEFT$(msgs$,LEN(msgs$)-1)
  1150.  WEND
  1151.  
  1152. RETURN 
  1153.  
  1154.  
  1155. Bestaetigung:
  1156.  
  1157.  MOUSE OFF 
  1158.  IF request%=3 THEN LOCATE ttextwl,ttextwp:COLOR 1:PRINT"Weiter"
  1159.  LOCATE ttextrl,ttextrp:COLOR 1:PRINT"Richtig":
  1160.  LOCATE ttextfl,ttextfp:COLOR 2:PRINT"Falsch":COLOR 1
  1161.  IF request%=3 THEN txwpos%=ttextwp*8-22:tywpos%=ttextwl*8-13
  1162.  txrpos%=ttextrp*8-19:tyrpos%=ttextrl*8-13
  1163.  txfpos%=ttextfp*8-22:tyfpos%=ttextfl*8-13
  1164.  IF request%=3 THEN
  1165.  LINE(txwpos%,tywpos%)-(txwpos%+75,tywpos%+17),3,b
  1166.  LINE(txwpos%+4,tywpos%+2)-(txwpos%+71,tywpos%+15),3,b
  1167.  END IF
  1168.  LINE(txrpos%,tyrpos%)-(txrpos%+75,tyrpos%+17),3,b
  1169.  LINE(txrpos%+4,tyrpos%+2)-(txrpos%+71,tyrpos%+15),3,b
  1170.  LINE(txfpos%,tyfpos%)-(txfpos%+75,tyfpos%+17),3,b
  1171.  LINE(txfpos%+4,tyfpos%+2)-(txfpos%+71,tyfpos%+15),3,b
  1172. RETURN 
  1173.  
  1174. Mouseposition:
  1175.  
  1176.  fehler=3:IF hlf%=1 THEN Weiter27
  1177.  xpos=MOUSE(3): ypos=MOUSE(4)
  1178.  IF request%=3 THEN
  1179.  IF xpos>txwpos% AND xpos<txwpos%+75 AND ypos>tywpos% AND ypos<tywpos%+17 THEN fehler=2
  1180.  END IF
  1181.  IF xpos>txrpos% AND xpos<txrpos%+75 AND ypos>tyrpos% AND ypos<tyrpos%+17 THEN fehler=0
  1182.  IF xpos>txfpos% AND xpos<txfpos%+75 AND ypos>tyfpos% AND ypos<tyfpos%+17 THEN fehler=1
  1183.  IF request%=3 AND fehler=2 THEN PAINT(txwpos%+2,tywpos%+2),1,3 
  1184.  IF fehler=0 THEN PAINT(txrpos%+2,tyrpos%+2),1,3 
  1185.  IF fehler=1 THEN PAINT(txfpos%+2,tyfpos%+2),2,3
  1186.  IF fehler=3 OR kontenaktiv%=1 THEN RETURN
  1187. Weiter27:
  1188.  ON mousep% GOTO Mp1,Mp2,Mp3,Mp4,Mp5,Mp6,Mp7,Mp8,Mp9,Mp10,Mp11,Mp12,Mp13,Mp14,Mp15,Mp16,Mp17,Mp18
  1189.  
  1190. Sort:
  1191.  
  1192.  MOUSE OFF:MENU OFF 
  1193.  WINDOW 3,"Daten sortieren",(50,50)-(580,100),0,1 
  1194.  meldung$="Du willst nun die Datei "+MID$(dateiname$,16,16)+" sortieren !"
  1195.  center=33-(LEN(meldung$)/2)
  1196.  LOCATE 2,center :PRINT meldung$ 
  1197.  ttextrl=5:ttextrp=23:ttextfl=5:ttextfp=40:GOSUB Bestaetigung
  1198.  mousep%=8:RETURN
  1199. Mp8:
  1200.  mousep%=0  
  1201.  IF fehler=1 AND tagkorflag%=0 THEN Windowclose3
  1202.  IF fehler=1 THEN Weiter17
  1203.  operationstext$="Ich sortiere nun die Daten ! Bitte Geduld !"
  1204.  flag=1:GOSUB Operationsmeldung
  1205.  GOSUB Bubblesort
  1206. Weiter17:
  1207.  operationstext$="Ich speichere nun die Daten !"
  1208.  flag=1:GOSUB Operationsmeldung
  1209.  GOSUB Rueckschreiben:GOSUB Windowclose3
  1210.  GOSUB Tabmaske
  1211.  IF tagkorflag%=1 THEN tagkorflag%=0
  1212. GOTO Tabausgabe
  1213.  
  1214. Vertikaltext:
  1215.  
  1216. Text1:
  1217.  DATA 1,2,3,4,5
  1218. Text2:
  1219.  DATA S,E,L,E,K,T
  1220. Text3:
  1221.  DATA C,L,E,A,R
  1222. Text4:
  1223.  DATA C,E
  1224.  
  1225. Kontengrafik:
  1226.  
  1227.  WINDOW 2
  1228.   grafikaktiv%=1
  1229.   GOSUB Bildaus
  1230.   f=5:zoom%=0
  1231.   COLOR 4,0:CLS 
  1232.   LINE(0,0)-(311,175),f,b:LINE(1,1)-(310,174),f,b
  1233.   LINE(0,19)-(310,20),f,b:LINE(0,33)-(310,34),f,b
  1234.   GOSUB Zoomtaste
  1235.   GOSUB Hcopytaste
  1236.   GOSUB Gkselekttaste
  1237.   GOSUB Selcleartaste
  1238.   GOSUB Gkspnrtasten
  1239.   GOSUB Gkspeichertaste
  1240.   RESTORE Text1:FOR x=0 TO 8 STEP 2:LOCATE 6+x,2:READ b$:PRINT b$:NEXT   
  1241.   RESTORE Text2:FOR x=0 TO 5:LOCATE 6+x,38:READ b$:PRINT b$:NEXT
  1242.   RESTORE Text3:FOR x=0 TO 4:LOCATE 13+x,38:READ b$:PRINT b$:NEXT
  1243.   RESTORE Text4:FOR x=0 TO 1:LOCATE 16+x,2:READ b$:PRINT b$:NEXT
  1244.   LOCATE 2,5:PRINT"Grafik vom "zeitstart$" bis "zeitende$ 
  1245.   LOCATE 4,2:PRINT"Konto:":LOCATE 4,20:PRINT"Betrag:"
  1246.   LOCATE 21:PRINT PTAB(7)"HCOPY";:PRINT PTAB(269)"ZOOM";
  1247.   LOCATE 12,5:PRINT"Bitte Geduld ich suche Daten !"
  1248.   GOSUB Bildein
  1249.  ERASE kges:DIM kges(90):gesamt=0:kmax=0:zkmax=0
  1250.  FOR x%=1 TO anzahl%
  1251.    d$= MID$(ds$(x%),4,8)
  1252.    IF zeitstart$=<d$ AND zeitende$>=d$ THEN
  1253.      y%=VAL(LEFT$(ds$(x%),2)) 
  1254.      w=VAL(RIGHT$(ds$(x%),10)):kges(y%)=kges(y%)+w
  1255.      gesamt=gesamt+w
  1256.     END IF
  1257.  NEXT x%
  1258.  IF gesamt=0 THEN 
  1259.   CLS:grafikaktiv%=0
  1260.   fehlertext$="Habe keine Daten gefunden !"
  1261.   GOTO Fehlermeldung
  1262.  END IF
  1263.  
  1264.  FOR x%=30 TO 70 STEP 10
  1265.   FOR y%=2 TO 6
  1266.    kges(x%)=kges(x%+y%)+kges(x%)
  1267.   NEXT
  1268.   IF ABS(kges(x%))>=ABS(zkmax) THEN zkmax=ABS(kges(x%))
  1269.  NEXT
  1270.  
  1271. Grafikrefresh:
  1272.  
  1273.  LINE(21,35)-(290,153),0,bf:LINE(51,154)-(259,173),0,bf
  1274.  LINE(2,139)-(21,153),0,bf:LINE(259,139)-(309,153),0,bf 
  1275.  IF kgselekt%=1 THEN GOSUB Saeulenmaske:RETURN
  1276.  IF zoom%=0 THEN GOSUB Unzoom 
  1277.  IF zoom%>0 THEN GOSUB Zoomen 
  1278.  GOSUB Saeulenmaske
  1279. RETURN
  1280.  
  1281. Gkspnrtasten:
  1282.  
  1283.  FOR y%=1 TO 5 :y0=y%*16-16:y1=y0+14
  1284.  FOR x=0 TO 1:LINE(3+x,36+x+y0)-(20-x,36-x+y1),f-(spsel%(y%)*3),b:NEXT x,y%
  1285. RETURN
  1286.  
  1287. Gkspeichertaste:
  1288.  
  1289.  LINE(3,116)-(20,138),f-gksp%*3,b:LINE(4,117)-(19,137),f-gksp%*3,b
  1290. RETURN
  1291.  
  1292. Selcleartaste:
  1293.  
  1294.  LINE(291,92)-(308,138),f-spselclr%*3,b:LINE(292,93)-(307,137),f-spselclr%*3,b
  1295. RETURN
  1296.  
  1297. Gkselekttaste:
  1298.  
  1299.  LINE(291,36)-(308,90),f-sele%*3,b:LINE(292,37)-(307,89),f-sele%*3,b
  1300. RETURN
  1301.  
  1302. Hcopytaste:
  1303.  
  1304.  LINE(3,155)-(50,172),f-hcop%*3,b:LINE(4,156)-(49,171),f-hcop%*3,b
  1305. RETURN
  1306.  
  1307. Zoomtaste:
  1308.  
  1309.  LINE(260,155)-(308,172),f-zoomt%*3,b:LINE(261,156)-(307,171),f-zoomt%*3,b
  1310. RETURN
  1311.  
  1312.  
  1313. Zoomswitch:
  1314.  
  1315.  sele%=0:GOSUB Gkselekttaste
  1316.  kgselekt%=0
  1317.  IF zoom%=0 THEN zoom%=zoomsel%+1::ELSE zoom%=0
  1318.  GOSUB Grafikrefresh
  1319. RETURN
  1320.  
  1321. Kselektswitch:
  1322.  
  1323.  zoom%=6
  1324.  sele%=0:GOSUB Gkselekttaste
  1325.  kgselekt%=1-kgselekt%
  1326.  IF kgselekt%=0 THEN zoom%=0:GOSUB Grafikrefresh:RETURN
  1327.  IF kgselekt%=1 THEN
  1328.    sele%=1:GOSUB Gkselekttaste
  1329.    kmax=0:FOR x%=1 TO 5                         
  1330.     IF ABS(kges(81+x%))>=kmax THEN
  1331.       kmax=ABS(kges(81+x%))
  1332.     END IF 
  1333.   NEXT
  1334.     FOR x%=1  TO 5
  1335.     IF kmax<>0 THEN 
  1336.      shp%(x%)=INT(kges(81+x%)/kmax*80)
  1337.     ELSE
  1338.      shp%(x%)=0
  1339.     END IF
  1340.     IF kges(81+x%)<>0 AND shp%(x%)=0 THEN shp%(x%)=1
  1341.     NEXT
  1342.   GOSUB Grafikrefresh
  1343.  END IF
  1344. RETURN
  1345.  
  1346.  
  1347. Zoomen:
  1348.  
  1349.  zoomt%=1:GOSUB Zoomtaste
  1350.  kmax=0
  1351.  FOR x%=1 TO 5
  1352.   IF ABS(kges((zoom%+2)*10+1+x%))>=kmax THEN
  1353.    kmax=ABS(kges((zoom%+2)*10+1+x%))
  1354.   END IF 
  1355.  NEXT
  1356.  FOR x%=1  TO 5:shp%(x%)=0
  1357.   IF kmax<>0 THEN shp%(x%)=INT(kges((zoom%+2)*10+1+x%)/kmax*80)
  1358.   IF kges((zoom%+2)*10+1+x%)<>0 AND shp%(x%)=0 THEN shp%(x%)=1
  1359.  NEXT
  1360. RETURN
  1361.  
  1362. Unzoom:  
  1363.  
  1364.  zoomt%=0:GOSUB Zoomtaste 
  1365.  FOR x=1 TO 5:shp%(x)=INT(kges((x+2)*10)/zkmax*80)  
  1366.  IF kges((x+2)*10)<>0 AND shp%(x)=0 THEN shp%(x)=1
  1367.  NEXT
  1368. RETURN
  1369.  
  1370. Grafikselekt:
  1371.  
  1372.  WINDOW 2:dummy=MOUSE(0)
  1373.  gx%=MOUSE(1):gy%=MOUSE(2)  
  1374.  IF gx%<50 AND gy%>156 THEN Grafikprint
  1375.  IF gx%>270 AND gy%>156 THEN Zoomswitch
  1376.  IF gx%>30 AND gx%<290 AND gy%>50 THEN Saeulenselekt
  1377.  IF gx%<20 AND gy%>36 AND gy%<138 THEN Kselektspeicher
  1378.   IF gx%>290 THEN
  1379.    IF gy%>36 AND gy%<91 THEN Kselektswitch
  1380.    IF gy%>91 AND gy%<138 THEN Selektclear
  1381.  END IF
  1382. RETURN
  1383.  
  1384. Selektclear1:
  1385.  
  1386.  kges(81+ksspnume%)=0:m$(8,ksspnume%+1)="":shp%(ksspnume%)=0
  1387.  spsel%(ksspnume%)=0:GOSUB Gkspnrtasten
  1388. RETURN
  1389.  
  1390. Selektclear:
  1391.  
  1392.  spselclr%=1:GOSUB Selcleartaste
  1393.  FOR x=80 TO 88:kges(x)=0:NEXT:FOR x=0 TO 6:m$(8,x)="":NEXT
  1394.  FOR x%=1  TO 5:spsel%(x%)=0:GOSUB Gkspnrtasten:shp%(x%)=0:NEXT
  1395.  GOSUB Grafikrefresh
  1396.  spselclr%=0:GOSUB Selcleartaste
  1397. RETURN
  1398.  
  1399. Kselektspeicher:
  1400.  
  1401.  ksspnum%=(gy%-28)/16  
  1402.  IF ksspnum%<6 THEN ksspnume%=ksspnum%
  1403.  IF ksspnum%>5 THEN 
  1404.    gksp%=1:GOSUB Gkspeichertaste
  1405.    GOSUB Selektclear1
  1406.    gksp%=0:GOSUB Gkspeichertaste
  1407.  END IF
  1408.  IF zoom%=0 THEN
  1409.    kges(81+ksspnum%)=kges((zoomsel%+3)*10)
  1410.    m$(8,1+ksspnum%)=m$((zoomsel%+3),1)
  1411.   ELSE
  1412.    kges(81+ksspnum%)=kges((zoom%+2)*10+zoomsel%+2)
  1413.    m$(8,1+ksspnum%)=m$((zoom%+2),zoomsel%+2)
  1414.  END IF
  1415.  spsel%(ksspnum%)=1:GOSUB Gkspnrtasten
  1416.  zoomsel%=ksspnum%-1
  1417.  zoomret%=zoom%:zoom%=6
  1418.  GOSUB Saeulenselprint
  1419.  zoom%=zoomret%
  1420. RETURN 
  1421.  
  1422. Saeulenselekt:
  1423.  
  1424.  zoomsel%=INT(gx%-5)/51-1
  1425.  
  1426. Saeulenselprint:
  1427.  
  1428.  COLOR 4,0
  1429.  IF zoom%=0 THEN
  1430.    LOCATE 4,9:PRINT SPACE$(11)
  1431.    LOCATE 4,9:PRINT m$(zoomsel%+3,0)
  1432.    LOCATE 4,27:PRINT SPACE$(11)
  1433.    LOCATE 4,27:PRINT USING "########.##";kges((zoomsel%+3)*10)
  1434.   ELSE
  1435.    LOCATE 4,9:PRINT SPACE$(11)
  1436.    LOCATE 4,9:PRINT m$(zoom%+2,zoomsel%+2)
  1437.    LOCATE 4,27:PRINT SPACE$(11)
  1438.    LOCATE 4,27:PRINT USING "########.##";kges((zoom%+2)*10+zoomsel%+2)
  1439.  END IF
  1440. RETURN
  1441.  
  1442.    
  1443. Saeulenmaske:
  1444.  
  1445.   yy%=4:FOR xx%=0 TO 204 STEP 102:GOSUB Grafschild0:NEXT
  1446.   yy%=20:FOR xx%=51 TO 153 STEP 102:GOSUB Grafschild0:NEXT
  1447.   xx%=0 :FOR x%=1 TO 5:sh%=shp%(x%):GOSUB KontoSaeulen :xx%=xx%+51:NEXT
  1448.   hcf%=4
  1449.  
  1450. Saeulentext:
  1451.  
  1452.   FOR x%=1 TO 5 
  1453.     IF zoom%=0 THEN 
  1454.       schild$(x%)=m$(x%+2,0)
  1455.      ELSE
  1456.       schild$(x%)=m$(zoomsel%+3,x%+1)
  1457.     END IF
  1458.     IF zoom%=6 THEN schild$(x%)=m$(8,1+x%)
  1459.   NEXT
  1460.   z2=0:FOR x%=1 TO 5
  1461.   LOCATE 19+z2,1:COLOR hcf%,2
  1462.   PRINT PTAB(51*x%-(LEN(schild$(x%))*4))schild$(x%); 
  1463.   IF z2=0 THEN z2=2 ::ELSE z2=0
  1464.   NEXT
  1465. RETURN
  1466.    
  1467. Grafschild0:
  1468.   LINE(8+xx%,136+yy%)-(98+xx%,148+yy%),4,b
  1469.   LINE(7+xx%,137+yy%)-(97+xx%,149+yy%),2,bf
  1470.   LINE(51+xx%,132)-(53+xx%,137+yy%),2,bf
  1471.   LINE(54+xx%,133)-(54+xx%,136+yy%),4
  1472.   LINE(32+xx%,131)-(70+xx%,132),3,b        
  1473.   LINE(33+xx%,130)-(38+xx%,125),3           
  1474.   LINE(71+xx%,130)-(76+xx%,125),3          
  1475.   LINE(71+xx%,131)-(76+xx%,126),3          
  1476.   LINE(38+xx%,125)-(76+xx%,125),3          
  1477.   PAINT(43+xx%,127),4,3  
  1478. RETURN  
  1479.  
  1480.  
  1481. KontoSaeulen:
  1482.   
  1483.   IF sh%<0 THEN sh%=ABS(sh%):zf=3 ::ELSE zf=0
  1484.   topp%=131-sh%:IF sh%=0 THEN RETURN
  1485.   LINE(32+xx%,130)-(70+xx%,110),0,bf
  1486.   LINE(32+xx%,130)-(70+xx%,topp%),5-zf,bf     
  1487.   LINE(33+xx%,topp%-1)-(38+xx%,topp%-6),6-zf  
  1488.   LINE(71+xx%,topp%-1)-(76+xx%,topp%-6),6-zf   
  1489.   LINE(38+xx%,topp%-6)-(76+xx%,topp%-6),6-zf  
  1490.   LINE(33+xx%,topp%-1)-(70+xx%,topp%-1),6-zf  
  1491.   PAINT(50+xx%,topp%-3),6-zf                   
  1492.   LINE(71+xx%,129)-(76+xx%,124),7-zf           
  1493.   LINE(71+xx%,topp%-1)-(76+xx%,topp%-6),7-zf   
  1494.   LINE(71+xx%,129)-(71+xx%,topp%-1),7-zf       
  1495.   LINE(76+xx%,124)-(76+xx%,topp%-6),7-zf       
  1496.   IF sh%=1 THEN RETURN
  1497.   PAINT(73+xx%,topp%-2),7-zf                   
  1498. RETURN
  1499.  
  1500.  
  1501. Grafikprint:
  1502.  
  1503.  hcop%=1:GOSUB Hcopytaste
  1504.  sWindow&   = WINDOW(7)
  1505.  sScreen&   = PEEKL(sWindow& + 46)
  1506.  sViewPort& = sScreen& + 44
  1507.  sRastPort& = sScreen& + 84
  1508.  sColorMap& = PEEKL(sViewPort& + 4)
  1509.  maxWidth%  = PEEKW(sScreen& + 12)
  1510.  maxHeight% = PEEKW(sScreen& + 14)
  1511.  viewModes% = PEEKW(sViewPort& + 32)
  1512.  command%  = 11   
  1513.  srcX% = 3        
  1514.  srcY% = 11 
  1515.  srcWidth%  = maxWidth%-6
  1516.  srcHeight% = maxHeight%-14
  1517.  destRows& = 0    
  1518.  destCols& = 0
  1519.  special% = &H84  
  1520.  sigBit% =  AllocSignal%(-1)
  1521.  ClearPublic& = 65537
  1522.  msgPort& = AllocMem&(40,ClearPublic&)
  1523.  POKE(msgPort& + 8), 4 
  1524.  POKE(msgPort& + 9), 0  
  1525.  portName$ = "MyPrtPort"+CHR$(0)
  1526.  POKEL(msgPort& + 10), SADD(portName$)
  1527.  POKE(msgPort& + 14), 0 
  1528.  POKE(msgPort& + 15), sigBit%
  1529.  sigTask& = FindTask&(0)
  1530.  POKEL(msgPort& + 16), sigTask&
  1531.  CALL AddPort(msgPort&) 
  1532.  ioRequest& = AllocMem&(64,ClearPublic&)
  1533.  POKE(ioRequest& + 8),5 
  1534.  POKE(ioRequest& + 9),0 
  1535.  POKEL(ioRequest& + 14), msgPort&
  1536.  devName$ = "printer.device"+CHR$(0)
  1537.  IF FRE(-1)<30000 THEN
  1538.  GOSUB Outoffmem:hcop%=0:GOSUB Hcopytaste:RETURN
  1539.  END IF
  1540.  pError& = OpenDevice&(SADD(devName$),0,ioRequest&,0)
  1541.  IF pError& <> 0  THEN
  1542.   fehlertext$="Drucker nicht ansprechbar."
  1543.   hcop%=0:GOSUB Hcopytaste
  1544.   GOSUB Fehlermeldung
  1545.   GOSUB Windowclose3
  1546.   GOTO Cleanup2
  1547.  END IF
  1548.  POKEW(ioRequest& + 28), command%
  1549.  POKEL(ioRequest& + 32), sRastPort&
  1550.  POKEL(ioRequest& + 36), sColorMap&
  1551.  POKEL(ioRequest& + 40), viewModes%
  1552.  POKEW(ioRequest& + 44), srcX%
  1553.  POKEW(ioRequest& + 46), srcY%
  1554.  POKEW(ioRequest& + 48), srcWidth%
  1555.  POKEW(ioRequest& + 50), srcHeight%
  1556.  POKEL(ioRequest& + 52), destCols&
  1557.  POKEL(ioRequest& + 56), destRows&
  1558.  POKEW(ioRequest& + 60), special%
  1559.  hcf%=0:GOSUB Saeulentext
  1560.  ioError& = DoIO&(ioRequest&)
  1561.  hcf%=4:GOSUB Saeulentext
  1562.  IF ioError& <> 0 THEN
  1563.   fehlertext$="Problem beim Drucken. Hardcopy abgebrochen !"
  1564.   hcop%=0:GOSUB Hcopytaste
  1565.   GOSUB Fehlermeldung
  1566.   GOSUB Windowclose3
  1567.  END IF
  1568.  CALL CloseDevice(ioRequest&)
  1569.  
  1570. Cleanup2:
  1571.  
  1572.  POKE(ioRequest& + 8), &Hff
  1573.  POKEL(ioRequest& + 20), -1
  1574.  POKEL(ioRequest& + 24), -1
  1575.  CALL FreeMem(ioRequest&,64)
  1576.  CALL RemPort(msgPort&)
  1577.  POKE(msgPort& + 8), &Hff  
  1578.  POKEL(msgPort& + 20), -1
  1579.  CALL FreeSignal(sigBit%)
  1580.  CALL FreeMem(msgPort&,40)   
  1581.  hcop%=0:GOSUB Hcopytaste
  1582. RETURN
  1583.  
  1584. Tabprint:
  1585.  
  1586.  MOUSE OFF 
  1587.  FOR x%=3 TO 7 :m%(x%,0)=m%(x%,1) :NEXT            
  1588.  IF tabaktuell=0 THEN 
  1589.   fehlertext$="Bitte vor Ausdruck Tabelle aktualisieren !":GOTO Fehlermeldung
  1590.  END IF
  1591.  IF z%=0 THEN 
  1592.   fehlertext$="Keine Daten zum Drucken vorhanden !":GOTO Fehlermeldung
  1593.  END IF 
  1594.  printakt%=1:GOSUB Bildaus
  1595.  CLS
  1596.  IF sortflag%=0 THEN smodus$="sortiert nach Konten"
  1597.  IF sortflag%=1 THEN smodus$="sortiert nach Datum" 
  1598.  IF detailflag%=1 THEN prtmodus$="detailiert"
  1599.  IF gesamtflag%=1 THEN prtmodus$="im Gesamten":smodus$=""
  1600.  IF filterflag%=1 THEN prtmodus$="gefiltert"
  1601.  IF monatflag%=1 THEN prtmodus$="als Monatsabrechnung":smodus$=""
  1602.  LOCATE 2,7:PRINT"Es werden die Eintragungen der markierten Konten "smodus$    
  1603.  FOR x%=3 TO 7:y%=0:LOCATE 4,(x%-3)*13+10:GOSUB Markieren1: NEXT x%     
  1604.  FOR y%=2 TO 6
  1605.   FOR x%=3 TO 7 :LOCATE y%+4,10+(x%-3)*13:GOSUB Markieren1: NEXT x% 
  1606.   COLOR 1 
  1607.  NEXT y%
  1608.  LOCATE 12,9
  1609.  PRINT "In der Zeit von "zeitstart$" bis "zeitende$" "prtmodus$" ausgedruckt !"
  1610.  LOCATE 14,5:PRINT"Datum (JJ-MM-TT):"  
  1611.  LOCATE 14,32:PRINT"Kommentar:"  
  1612.  GOSUB Bildein
  1613.  LOCATE 14,22:laenge=8:msgs$=pdatum$:GOSUB Superinput: pdatum$=msgs$ 
  1614.  LOCATE 14,42:laenge=34:msgs$=pkom$:GOSUB Superinput: pkom$=msgs$
  1615.  ttextrl=18:ttextrp=28:ttextfl=18:ttextfp=45:GOSUB Bestaetigung
  1616.  mousep%=9:RETURN
  1617. Mp9:
  1618.  mousep%=0  
  1619.  IF fehler=1 THEN 
  1620.  printakt%=0:GOSUB Tabmaske:GOTO Tabausgabe
  1621.  END IF 
  1622.  operationstext$="Drucker arbeitet : Abbruch durch (ESC)" 
  1623.  flag=1:GOSUB Operationsmeldung 
  1624.   
  1625.  pagenr= INT((z%-41)/60)+2 
  1626.  pagel%=72                        
  1627.  pagec=1                          
  1628.  plr%=10 :prr%=plr%+86            
  1629.  IF FRE(-1)<30000 THEN 
  1630.  GOSUB Outoffmem:GOSUB Windowclose3
  1631.  printakt%=0:GOSUB Tabmaske:GOTO Tabausgabe
  1632.  END IF
  1633.  OPEN "prt:" FOR OUTPUT AS #1
  1634.  PRINT #1,CHR$(27)"c";            
  1635.  PRINT #1,CHR$(27)"#1";           
  1636.  PRINT #1,CHR$(27)"[1z";           
  1637.  PRINT #1,CHR$(27)"[";pagel%;"t"; 
  1638.  PRINT #1,CHR$(27)"[2w";          
  1639.  PRINT #1,CHR$(27)"(K";          
  1640.  PRINT #1,CHR$(27)"[6w";         
  1641.  PRINT #1,CHR$(27)"[1m";          
  1642.  PRINT #1,CHR$(27)"[2"CHR$(34)"z";          
  1643.  PRINT #1,CHR$(27)"[4m"           
  1644.  PRINT #1,"Auflistung der Tabelle nach Konten und Zeit"
  1645.  PRINT #1,CHR$(27)"[24m";        
  1646.  PRINT #1,CHR$(27)"[5w";          
  1647.  PRINT #1,CHR$(13) 
  1648.  PRINT #1,"Tabelle vom ";
  1649.  PRINT #1,USING "\      \";pdatum$;:PRINT #1,"    ";
  1650.  PRINT #1,USING "\                                              \";pkom$;
  1651.  PRINT #1,"Seite 1 von"pagenr
  1652.  GOSUB Strich 
  1653.    
  1654.  PRINT #1,"Es werden die Eintragungen der markierten Konten "smodus$
  1655.  PRINT #1,CHR$(13)
  1656.  FOR x%=3 TO 7 :y%=0: GOSUB Markieren :NEXT      
  1657.  PRINT #1,CHR$(13)
  1658.  GOSUB Strich
  1659.  FOR y%=2 TO 6
  1660.   FOR x%=3 TO 7 :GOSUB Markieren
  1661.   NEXT x% 
  1662.   PRINT #1,CHR$(13)
  1663.  NEXT y%
  1664.  GOSUB Strich
  1665.  PRINT #1,"In der Zeit von "zeitstart$" bis einschließlich "zeitende$" "prtmodus$" ausgedruckt !" 
  1666.  GOSUB Strich
  1667.  PRINT #1,CHR$(27)"[22m";
  1668.  x%=0
  1669.  
  1670.  WHILE x%<z%
  1671.   x%=x%+1  
  1672.   FOR v%=41 TO datenmenge+200 STEP 60
  1673.    IF x%=v% THEN GOSUB Umblaettern  
  1674.   NEXT
  1675.   PRINT #1,USING "###";x%;:PRINT #1,"  "; 
  1676.   IF gesamtakt%=0 THEN
  1677.    PRINT #1,USING "\                                                                      \";MID$(ds$(show%(x%)),3,LEN(ds$(show%(x%)))-12);
  1678.    IF VAL(RIGHT$(ds$(show%(x%)),10))<>0 THEN
  1679.     PRINT #1,USING "#######.##";VAL(RIGHT$(ds$(show%(x%)),10));
  1680.    END IF
  1681.   ELSE 
  1682.   PRINT #1,USING "\                                                                      \";MID$(show$(x%),3,LEN(show$(x%))-12);
  1683.   IF VAL(RIGHT$(show$(x%),10))<>0 THEN
  1684.    PRINT #1,USING "#######.##";VAL(RIGHT$(show$(x%),10));
  1685.   END IF
  1686.   END IF
  1687.   PRINT #1,CHR$(13)
  1688.   IF INKEY$=CHR$(27) THEN Abbruch
  1689.  WEND 
  1690.  GOSUB Strich
  1691.  PRINT #1,"Im Gesamten wurden für die gewählten Konten laut Zeitmaske ";
  1692.  PRINT #1,CHR$(27)"[1m";
  1693.  PRINT #1,USING "########.##";gesamtbe;
  1694.  PRINT #1,CHR$(27)"[22m";
  1695.  PRINT #1," "waehrung$" aufgewendet !"
  1696.  GOSUB Strich
  1697.  GOSUB Seitenumbruch
  1698.  CLOSE #1 
  1699.  operationstext$="Druckoperation fertig !":GOSUB Operationsmeldung
  1700.  printakt%=0:GOSUB Tabmaske:GOTO Tabausgabe
  1701.  
  1702. Markieren:
  1703.  
  1704.   IF m%(x%,y%)=1 THEN
  1705.     mp$(x%,y%)="* "+m$(x%,y%)
  1706.     PRINT #1,CHR$(27)"[1m";
  1707.   ELSE 
  1708.     mp$(x%,y%)="  "+m$(x%,y%)
  1709.     PRINT #1,CHR$(27)"[22m";
  1710.   END IF
  1711.       PRINT #1,USING "\               \" ;mp$(x%,y%);
  1712. RETURN
  1713.  
  1714. Markieren1:
  1715.  
  1716.   IF m%(x%,y%)=1 THEN  
  1717.    COLOR 2
  1718.     ELSE
  1719.    COLOR 1
  1720.   END IF
  1721.   CALL Text (WINDOW(8),SADD(m$(x%,y%)),LEN(m$(x%,y%)))
  1722. RETURN 
  1723.  
  1724.  
  1725. Abbruch:
  1726.  
  1727.  CLOSE #1 
  1728.  fehlertext$="Druckoperation abgebrochen !":GOSUB Fehlermeldung 
  1729.  printakt%=0:GOSUB Tabmaske:tabaktiv=0:GOTO Tabausgabe 
  1730.  
  1731. Strich: 
  1732.  
  1733.  FOR y%=1 TO 87:PRINT #1,"_";:NEXT:PRINT #1,CHR$(13):PRINT #1,CHR$(13)
  1734. RETURN 
  1735.  
  1736. Umblaettern:
  1737.  
  1738.  IF z%=40+(60*(pagenr-1)) THEN RETURN
  1739.  GOSUB Strich :pagec=pagec+1
  1740.  PRINT #1,CHR$(27)"[1m";
  1741.  FOR y%=1 TO 5:PRINT #1,CHR$(13):NEXT
  1742.  GOSUB Strich
  1743.  PRINT #1,"Tabelle vom ";
  1744.  PRINT #1,USING "\      \";pdatum$;
  1745.  PRINT #1,"    ";
  1746.  PRINT #1,USING "\                                  \";pkom$;
  1747.  PRINT #1,"   (Fortsetzung)   Seite ";
  1748.  PRINT #1,USING "##";pagec;
  1749.  GOSUB Strich
  1750.  PRINT #1,CHR$(27)"[22m"; 
  1751. RETURN
  1752.  
  1753. Seitenumbruch:
  1754.  
  1755.  vz%= (pagenr*60+5-z%)-20:IF pagenr=1 THEN vz%=45-z%
  1756.  FOR y%=1 TO vz% :PRINT #1,CHR$(27)"d":NEXT
  1757. RETURN
  1758.  
  1759. Bubblesort:
  1760.  
  1761.  sortlg%=INT(anzahl%/2)+1:sortrg%=anzahl%
  1762. Loop1:
  1763.  IF sortrg%<=1 THEN GOTO Windowclose3
  1764. Loop2:
  1765.  IF sortlg%<=1 THEN Loop3
  1766.  sortlg%=sortlg%-1
  1767.  sorti%=sortlg%:GOTO Loop4
  1768. Loop3:
  1769.  SWAP ds$(1),ds$(sortrg%) 
  1770.  sortrg%=sortrg%-1
  1771.  sorti%=1
  1772. Loop4:
  1773.  sortx$=ds$(sorti%)
  1774.  sortp%=0
  1775. Loop5:
  1776.  IF 2*sorti%<=sortrg% AND sortp%=0 THEN Loop6
  1777.  ds$(sorti%)=sortx$
  1778.  GOTO Loop1
  1779. Loop6:
  1780.  sortj%=2*sorti%
  1781.  IF sortj%<sortrg% THEN
  1782.    IF MID$(ds$(sortj%),4,8)<MID$(ds$(sortj%+1),4,8) THEN sortj%=sortj%+1
  1783.  END IF
  1784.  IF MID$(sortx$,4,8)>=MID$(ds$(sortj%),4,8) THEN Loop7
  1785.  ds$(sorti%)=ds$(sortj%)
  1786.  sorti%=sortj%:GOTO Loop5
  1787. Loop7:
  1788.  sortp%=1:GOTO Loop5
  1789.  
  1790.  
  1791. Variablendim:
  1792.  
  1793.  DIM m$(8,8)
  1794.  DIM monat$(12)
  1795.  DIM kontoart$(8,8)
  1796.  DIM hilfefile$(2,15)
  1797.  DIM mp$(7,7),ma%(7)
  1798.  DIM m%(7,15) 
  1799.  DIM koliste%(30)
  1800.  DIM koliste$(30)
  1801.  DIM knum$(30)
  1802.  DIM kges(88)
  1803.  DIM gges(88)
  1804.  DIM mges(1,12) 
  1805.  DIM balken%(310)
  1806.  DIM c%(64),cs%(64)
  1807.  DIM dsmem$(50)
  1808.  DIM show$(26)
  1809.  datenmenge=INT((FRE(0)-5000)/108)
  1810.  IF datenmenge>999 THEN datenmenge=999
  1811.  DIM ds$(datenmenge),show%(datenmenge)
  1812.  DIM calc%(datenmenge)
  1813.  DIM sortlg%(datenmenge)
  1814.  DIM sortrg%(datenmenge)
  1815. RETURN
  1816.  
  1817. Datalesen:
  1818.  
  1819.  RESTORE Monatsnamen
  1820.  FOR x%=1 TO 12:READ monat$(x%)
  1821.  NEXT
  1822.  RESTORE Wochentage
  1823.  FOR x%=0 TO 6:READ wt$(x%)
  1824.  NEXT 
  1825.  RESTORE Hilfefiledatas
  1826.  FOR y%=0 TO 1:FOR x%=0 TO 14
  1827.  READ hilfefile$(y%,x%)
  1828.  NEXT x%,y%
  1829. RETURN
  1830.  
  1831. Farbeinstellung:
  1832.  
  1833.  RESTORE Farben
  1834.  FOR x%=0 TO 7:READ r(x%),g(x%),b(x%):PALETTE x%,r(x%),g(x%),b(x%):NEXT
  1835. RETURN
  1836.  
  1837. Hilfefiledatas:
  1838.  
  1839.  DATA Konten,Eingeben,Eingaben USINGndern,Zeitmaske
  1840.  DATA Datum USINGndern,Filtertext,WUSINGhrung,Dateien
  1841.  DATA Kontenlisten,Sortieren,Importieren
  1842.  DATA Exportieren,,,,,Tabelle Bildschirm,Tabelle Drucken,
  1843.  DATA Alle Konten,Gesamt,Detailiert,Filter
  1844.  DATA Sort.n.Konten,Sort.n.Datum,Monatsabrechnung,Grafikausgabe
  1845.  DATA Selektieren,Selektinvert,Selektloeschen
  1846.  
  1847. Farben:
  1848.  
  1849.  DATA 0,0,0,1,1,1,1,.2,.2,1,.7,.2,1,1,0,.3,.3,1,.7,.7,1,.5,.5,1          
  1850.  
  1851. Wochentage:
  1852.  
  1853.  DATA "Montag    ","Dienstag  ","Mittwoch  ","Donnerstag"
  1854.  DATA "Freitag   ","Samstag   ","Sonntag   "
  1855.  
  1856. Monatsnamen:
  1857.  
  1858.  DATA "Jänner   ","Februar  ","März     ","April    ","Mai      ","Juni     "
  1859.  DATA "Juli     ","August   ","September","Oktober  ","November ","Dezember "
  1860.  
  1861. Windowclose3:
  1862.  
  1863.  WINDOW CLOSE 3:WINDOW 1
  1864. RETURN
  1865.  
  1866. Datenein:
  1867.  
  1868.  CLOSE #2:diskfehler=0
  1869.  header$=ds$(0)
  1870.  OPEN dateiname$ FOR INPUT AS #2
  1871.  INPUT#2,ds$(0)
  1872.  IF LEFT$(ds$(0),2)="00" THEN Weiter10
  1873.  fehlertext$="Die Datei hat eine falsche Datenstruktur !"
  1874.  diskfehler=4:dateiname$=altdn$:ds$(0)=header$
  1875.  CLOSE #2:GOTO Fehlermeldung
  1876.  
  1877. Weiter10:
  1878.  
  1879.  ERASE m%,show%,show$:DIM m%(7,15),show%(datenmenge),show$(30)
  1880.  GOSUB Systemsetsave
  1881.  dzeitstart$=MID$(ds$(0),4,8):dzeitende$=MID$(ds$(0),13,8)
  1882.  IF zeitstart$<dzeitstart$ OR zeitende$>dzeitende$ THEN
  1883.  zeitstart$=dzeitstart$:zeitende$=dzeitende$
  1884.  END IF
  1885.  d0zeitstart$=dzeitstart$:d0zeitende$=dzeitende$
  1886.  Kontenliste$=RIGHT$(ds$(0),LEN(ds$(0))-21)
  1887.  
  1888. Importein:
  1889.  
  1890.  IF eximfl<>1 THEN anzahl%=0
  1891.  
  1892. Loop12:
  1893.  
  1894.  diskfehler=0
  1895.  IF EOF(2) THEN Loop13 
  1896.  INPUT#2,ds$(anzahl%+1)
  1897.  IF diskfehler>0 THEN
  1898.  fehlertext$="Schadhafte Datenstruktur !"
  1899.  diskfehler=0:eximfl=0:GOTO Fehlermeldung
  1900.  END IF
  1901.  anzahl%=anzahl%+1
  1902.  IF anzahl%>datenmenge-1 THEN CLOSE #2:anzahl%=0:GOTO Datenueberlauf
  1903.  GOTO Loop12 
  1904.  
  1905. Loop13:
  1906.  
  1907.  CLOSE #2 
  1908. RETURN
  1909.  
  1910. Datenueberlauf:
  1911.  
  1912.  IF eximfl=1 THEN anzahl%=altanzahl%
  1913.  fehlertext$="Datei zu groß ! Daten einlesen abgebrochen !"
  1914. GOTO Fehlermeldung
  1915.  
  1916. Rueckschreiben:
  1917.  
  1918.  MOUSE OFF:MENU OFF
  1919.  CLOSE #2
  1920.  diskfehler=0
  1921.  OPEN dateiname$ FOR OUTPUT AS #2
  1922.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Rueckschreiben
  1923.  PRINT #2,ds$(0)
  1924.  x%=1 
  1925.  WHILE x%<=anzahl%
  1926.  IF VAL(RIGHT$(ds$(x%),10))<>0 THEN PRINT #2,ds$(x%)
  1927.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Rueckschreiben
  1928.  x%=x%+1
  1929.  WEND
  1930.  CLOSE #2
  1931. RETURN
  1932.  
  1933. Konteneinlesen:
  1934.  
  1935.  ml%=0:diskfehler=0:CLOSE #2
  1936.  OPEN Kontenliste$ FOR INPUT AS#2
  1937.  INPUT#2,dummy$
  1938.  IF dummy$<>"11" OR diskfehler=2 THEN Kolesefehler
  1939.  ERASE m$,ma%,kontoart$:DIM m$(8,8),ma%(8),kontoart$(8,8)
  1940.  FOR x%=3 TO 7
  1941.  INPUT#2,ma%(x%)
  1942.  FOR y%=0 TO ma%(x%)
  1943.  INPUT#2,m$(x%,y%)
  1944.  INPUT#2,kontoart$(x%,y%)
  1945.  IF m$(x%,y%)<>"" THEN ml%=x%-2
  1946.  NEXT y%,x%
  1947.  CLOSE #2
  1948. RETURN 
  1949.  
  1950.  
  1951. Kolesefehler:
  1952.  
  1953.  CLOSE #2
  1954.  fehlertext$="Kontenliste hat falsches Datenformat !"
  1955. GOTO Fehlermeldung
  1956.  
  1957. Kontensave:
  1958.  
  1959.  operationstext$="Ich speichere nun die Kontenliste !"
  1960.  flag=1:GOSUB Operationsmeldung
  1961.  FOR x%=3 TO 7:FOR y%=0 TO 6
  1962.  IF m$(x%,y%)<>"" THEN ma%(x%)=y%
  1963.  NEXT y%,x%
  1964.  CLOSE #2
  1965.  diskfehler=0
  1966.  OPEN Kontenliste$ FOR OUTPUT AS #2 
  1967.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Kontensave 
  1968.  PRINT#2,"11"
  1969.  FOR x%=3 TO 7
  1970.  PRINT#2,ma%(x%)
  1971.  FOR y%=0 TO ma%(x%)
  1972.  PRINT#2,m$(x%,y%)
  1973.  PRINT#2,kontoart$(x%,y%)
  1974.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Kontensave
  1975.  NEXT y%,x%
  1976.  CLOSE #2
  1977. GOTO Windowclose3
  1978.  
  1979. Systemsetsave:
  1980.  
  1981.  diskfehler=0:CLOSE #3
  1982.  OPEN "Haushaltssystem/Systemset" FOR OUTPUT AS#3
  1983.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Systemsetsave 
  1984.  PRINT #3,dateiname$
  1985.  PRINT #3,Kontenliste$
  1986.  PRINT #3,detailflag%,gesamtflag%,sortflag%
  1987.  PRINT #3,waehrung$
  1988.  PRINT #3,zeitstart$
  1989.  PRINT #3,zeitende$
  1990.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Systemsetsave
  1991.  CLOSE #3
  1992. RETURN
  1993.  
  1994. Systemsetload:
  1995.  
  1996.  CLOSE #2:diskfehler=0
  1997.  OPEN "Haushaltssystem/Systemset" FOR INPUT AS#2
  1998.  IF diskfehler>0 THEN 
  1999.  fehlertext$="Oh weh. Mir fehlt mein SYSTEMSET File !"
  2000.  GOSUB Fehlermeldung:RETURN
  2001.  END IF
  2002.  INPUT #2,dateiname$
  2003.  INPUT #2,Kontenliste$
  2004.  INPUT #2,detailflag%,gesamtflag%,sortflag%
  2005.  INPUT #2,waehrung$
  2006.  INPUT #2,zeitstart$
  2007.  INPUT #2,zeitende$
  2008.  CLOSE #2
  2009. RETURN
  2010.  
  2011. Systemset:
  2012.  
  2013.  datum$=RIGHT$(DATE$,2)+"-"+LEFT$(DATE$,2)+"-"+MID$(DATE$,4,2)
  2014.  zeitstart$="80-01-01"
  2015.  dzeitstart$=zeitstart$
  2016.  zeitende$="99-12-31"
  2017.  dzeitende$=zeitende$
  2018.  d0zeitstart$=zeitstart$
  2019.  d0zeitende$=zeitende$
  2020.  seitendruck=1 
  2021.  waehrung$="ÖS"
  2022.  detailflag%=1
  2023.  sortflag%=1
  2024.  bildzeilen=16
  2025.  dateienmax=20
  2026.  kontenlmax=20
  2027.  dateiname1$="Haushaltsdaten/"
  2028. RETURN
  2029.  
  2030. Import:
  2031.  eximfl=1
  2032.  GOTO Loopvor
  2033.  
  2034. Export:
  2035.  
  2036.  eximfl=0
  2037. Loopvor:
  2038.  IF eximfl=0 THEN WINDOW 3,"Daten exportieren:",(80,50)-(550,140),0,1
  2039.  IF eximfl=1 THEN WINDOW 3,"Daten importieren:",(80,50)-(550,140),0,1
  2040.  PALETTE 3,0,0,0
  2041.  LOCATE 5,16:PRINT "Bitte Dateinamen eingeben !"            
  2042.  LINE (54,50)-(408,68),3,b:LINE (69,54)-(393,64),3,b
  2043.  PAINT (55,51),3
  2044.  PALETTE 3,r(3),g(3),b(3)
  2045.  LOCATE 8,10:laenge=39:msgs$=dateiname1$:GOSUB Superinput:dateiname1$=msgs$
  2046.  diskfehler=0
  2047.  OPEN dateiname1$ FOR INPUT AS #2
  2048.  CLOSE #2
  2049.  IF diskfehler=0 THEN Dateivorhanden   
  2050.  IF eximfl=1 THEN 
  2051.   fehlertext$="Datei nicht vorhanden"
  2052.   GOTO Fehlermeldung
  2053.  END IF
  2054.  WINDOW 3,"Dateien Exportieren:",(80,50)-(550,140),0,1
  2055.  LOCATE 4,15:PRINT " Dateiname für Export frei."
  2056.  LOCATE 6,15:PRINT "Wollen Sie nun exportieren ?"
  2057.  fehler=3
  2058.  ttextrl=9:ttextrp=20:ttextfl=9:ttextfp=34:mskip=0:GOSUB Bestaetigung
  2059.  mousep%=10:RETURN
  2060. Mp10: 
  2061.  mousep%=0 
  2062.  IF fehler=1 THEN Windowclose3
  2063. GOTO Exportieren
  2064.           
  2065. Dateivorhanden:
  2066.  IF eximfl=0 THEN 
  2067.  WINDOW 3,"Daten exportieren:",(80,50)-(550,140),0,1
  2068.  LOCATE 4,12:PRINT "      Dateiname schon vorhanden."
  2069.  LOCATE 6,12:PRINT "Wollen Sie diese Datei überschreiben ?"
  2070.  END IF
  2071.  IF eximfl=1 THEN
  2072.  WINDOW 3,"Daten Importieren:",(80,50)-(550,140),0,1
  2073.  LOCATE 4,12:PRINT  "          Dateiname vorhanden."
  2074.  LOCATE 6,12:PRINT  "  Wollen Sie diese Datei importieren ?"
  2075.  END IF
  2076.  fehler=3
  2077.  ttextrl=9:ttextrp=20:ttextfl=9:ttextfp=34:mskip=0:GOSUB Bestaetigung
  2078.  mousep%=11:RETURN
  2079. Mp11:
  2080.  mousep%=0  
  2081.  IF fehler=1 THEN GOTO Windowclose3
  2082.  IF eximfl=0 THEN Exportieren
  2083.  
  2084. Importieren:
  2085.  
  2086.  diskfehler=0
  2087.  OPEN dateiname1$ FOR INPUT AS #2
  2088.  IF diskfehler>0 THEN CLOSE #2:GOTO Fehlermeldung
  2089.  INPUT#2,dummy$
  2090.  IF LEFT$(dummy$,2)<>"22" THEN
  2091.  fehlertext$="Datenformat falsch !!!!"
  2092.  CLOSE #2:GOTO Fehlermeldung
  2093.  END IF
  2094.  IF dummy$<>"22 "+Kontenliste$ THEN
  2095.  WINDOW 3,"Warnung:",(80,50)-(550,140),0,1
  2096.  LOCATE 4,15:PRINT "   Kontenlisten nicht gleich."
  2097.  LOCATE 6,15:PRINT "Wollen Sie trotzdem importieren ?"
  2098.  ttextrl=9:ttextrp=20:ttextfl=9:ttextfp=34:mskip=0:GOSUB Bestaetigung
  2099.  mousep%=12:RETURN
  2100. Mp12:
  2101.  mousep%=0  
  2102.  IF fehler=1 THEN CLOSE#2:GOTO Windowclose3
  2103.  END IF
  2104.  
  2105.  CLS
  2106.  LOCATE 4,14:PRINT "    Sollen die Importierten Daten"
  2107.  LOCATE 6,14:PRINT "  in die Datei eingebunden werden ?"
  2108.  ttextrl=9:ttextrp=20:ttextfl=9:ttextfp=34:mskip=0:GOSUB Bestaetigung
  2109.  mousep%=15:RETURN
  2110. Mp15:
  2111.  mousep%=0  
  2112.  IF fehler=0 THEN fiximp%=1::ELSE:fiximp%=0
  2113.  altanzahl%=anzahl%
  2114.  GOSUB Importein:eximfl=0
  2115.  IF fiximp%=1 THEN GOSUB Rueckschreiben
  2116. GOTO Windowclose3 
  2117.  
  2118. Exportieren:
  2119.  
  2120.  IF z%<1 THEN 
  2121.  fehlertext$="Keine Daten zum Exportieren vorhanden !"
  2122.  GOTO Fehlermeldung
  2123.  END IF
  2124.  IF LEFT$(show$(1),2)="00" THEN
  2125.  fehlertext$="Monatsabrechnungen können nicht exportiert werden!"
  2126.  GOTO Fehlermeldung
  2127.  END IF 
  2128.  diskfehler=0
  2129.  OPEN dateiname1$ FOR OUTPUT AS #2
  2130.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Exportieren
  2131.  IF diskfehler>0 THEN
  2132.  CLOSE #2:GOTO Fehlermeldung
  2133.  END IF
  2134.  PRINT#2,"22 "Kontenliste$
  2135.  FOR x%=1 TO z%
  2136.  IF gesamtakt%=1 THEN
  2137.  PRINT#2,show$(x%)
  2138.  ELSE
  2139.  PRINT#2,ds$(show%(x%))
  2140.  END IF
  2141.  IF diskfehler=4 THEN GOSUB Fehlermeldung:GOTO Exportieren
  2142.  NEXT x%
  2143.  CLOSE #2
  2144. GOTO Windowclose3           
  2145.  
  2146. Konten:
  2147.  
  2148.  MENU OFF:MOUSE OFF
  2149.  WINDOW 3,"Kontenlisten aktuallisieren:",(80,50)-(550,140),0,1
  2150.  PALETTE 3,0,0,0
  2151.  LOCATE 5,14:PRINT "Bitte Kontenlistenname eingeben !"            
  2152.  LINE (54,50)-(408,68),3,b:LINE (69,54)-(393,64),3,b
  2153.  PAINT (55,51),3
  2154.  PALETTE 3,r(3),g(3),b(3)
  2155.  alkoli$=Kontenliste$
  2156.  IF Kontenliste$="" THEN Kontenliste$="Haushaltskonten/"
  2157.  LOCATE 8,10:laenge=39:msgs$=Kontenliste$:GOSUB Superinput
  2158.  Kontenliste$=msgs$
  2159.  diskfehler=0
  2160.  OPEN Kontenliste$ FOR INPUT AS #2
  2161.  CLOSE #2
  2162.  IF diskfehler=0 THEN GOSUB Konteneinlesen:GOTO Kontenmaske  
  2163.  WINDOW 3,"Kontenlisten Aktuallisieren:",(80,50)-(550,140),0,1
  2164.  LOCATE 4,9:PRINT "Ich habe diese Kontenliste nicht gefunden !"
  2165.  LOCATE 6,9:PRINT "Wollen Sie diese Kontenliste neu erstellen ?"
  2166.  fehler=3
  2167.  ttextrl=9:ttextrp=20:ttextfl=9:ttextfp=34:GOSUB Bestaetigung
  2168.  mousep%=13:RETURN
  2169. Mp13:
  2170.  mousep%=0  
  2171.  IF fehler=1 THEN Kontenliste$=alkoli$:GOTO Windowclose3
  2172.  ERASE m$,ma%,kontoart$:DIM m$(8,6),ma%(8),kontoart$(8,6)
  2173.  
  2174. Kontenmaske:
  2175.  
  2176.  GOSUB Windowclose3
  2177.  kontenaktiv%=1
  2178.  MOUSE ON :MENU OFF
  2179.  GOSUB Bildaus
  2180.  CLS
  2181.  LINE(15,5)-(625,17),2,b 
  2182.  LOCATE 2,5:PRINT"Kontenliste :"
  2183.  LOCATE 2,19:PRINT Kontenliste$
  2184.  LINE(15,37)-(625,115),3,bf:LINE(15,21)-(625,35),3,bf
  2185.  FOR x%=0 TO 4 
  2186.  LOCATE 4,x%*15+4:PRINT SPACE$(9)
  2187.  LOCATE 4,x%*15+4:PRINT m$(x%+3,0)
  2188.  NEXT 
  2189.  FOR x%=0 TO 4:FOR y%=1 TO 5
  2190.  LOCATE y%*2+4,x%*15+4:PRINT SPACE$(10)
  2191.  LOCATE y%*2+4,x%*15+4:PRINT m$(x%+3,y%+1)
  2192.  LOCATE y%*2+4,x%*15+15:PRINT SPACE$(3)
  2193.  LOCATE y%*2+4,x%*15+15:PRINT kontoart$(x%+3,y%+1)
  2194.  NEXT y%,x%
  2195.  FOR x%=1 TO 4
  2196.  LINE(120*x%+19,21)-(120*x%+20,115),0,b
  2197.  LINE(15,x%*16+36)-(625,x%*16+36),0,b
  2198.  NEXT
  2199.  ttextrl=18:ttextrp=28:ttextfl=18:ttextfp=45:GOSUB Bestaetigung
  2200.  GOSUB Bildein
  2201. RETURN
  2202.  
  2203. Kontenmousecheck:
  2204.  
  2205.  IF MOUSE(2)>115 THEN GOSUB Mouseposition:GOTO Kontentasten
  2206.  IF MOUSE(1)<=20 OR MOUSE(1)>=625 THEN RETURN
  2207.  IF MOUSE(2)<=20 THEN RETURN
  2208.  xwert%=INT((MOUSE(1)-20)/120)
  2209.  ywert%=INT((MOUSE(2)-20)/16)
  2210.  MOUSE OFF
  2211.  IF ywert%=0 THEN
  2212.  LOCATE ywert%*2+4,xwert%*15+4:msgs$=m$(xwert%+3,ywert%):laenge=8
  2213.  GOSUB Superinput:m$(xwert%+3,ywert%)=msgs$:m$(xwert%+3,ywert%+1)=msgs$
  2214.  MOUSE ON:RETURN
  2215.  END IF
  2216.  
  2217.  LOCATE ywert%*2+4,xwert%*15+4:msgs$=m$(xwert%+3,ywert%+1):laenge=9
  2218.  GOSUB Superinput:m$(xwert%+3,ywert%+1)=msgs$
  2219. Kontenart:
  2220.  LOCATE ywert%*2+4,xwert%*15+15:msgs$=kontoart$(xwert%+3,ywert%+1):laenge=2
  2221.  GOSUB Superinput:kontoart$(xwert%+3,ywert%+1)=msgs$
  2222.  IF msgs$="+" OR msgs$="-" OR msgs$="-u" OR msgs$="+u" THEN Weiter11
  2223.  kontoart$(xwert%+3,ywert%+1)="+":GOTO Kontenart
  2224. Weiter11: 
  2225.  MOUSE ON
  2226. RETURN
  2227.  
  2228. Kontentasten:
  2229.  
  2230.  IF fehler=3 THEN RETURN
  2231.  IF fehler=0 THEN GOSUB Kontensave
  2232.  IF fehler=1 THEN Kontenliste$=alkoli$
  2233.  operationstext$="Ich Aktuallisiere die Kontenliste !"
  2234.  flag=1:GOSUB Operationsmeldung
  2235.  GOSUB Konteneinlesen
  2236.  GOSUB Machkonten
  2237.  kontenaktiv%=0
  2238.  tabaktiv=0
  2239.  GOSUB Windowclose3
  2240.  GOSUB Tabmaske
  2241. GOTO Tabausgabe
  2242.  
  2243. Openwindow3:
  2244.  
  2245.  MENU OFF:MOUSE OFF
  2246.  WINDOW 3,windowtext$,(80,50)-(550,140),0,1
  2247. RETURN 
  2248.  
  2249.  
  2250. Autor:
  2251.  
  2252.  windowtext$="Der Autor !!!!!!!!!!! ":GOSUB Openwindow3
  2253.  CLS
  2254.  LOCATE 2,25:PRINT"Sauer Franz"
  2255.  LOCATE 3,20:PRINT"Senefeldergasse 58/28"
  2256.  LOCATE 4,25:PRINT"A-1100 Wien"
  2257.  LOCATE 5,13:PRINT"Tel. (Österreich) 0222 / 62 68 383"
  2258.  LOCATE 7,7: PRINT"Sollten noch Fragen zum Programm auftreten so"
  2259.  LOCATE 8,7: PRINT"richten Sie sich bitte an die oben angegebene"
  2260.  LOCATE 9,7: PRINT"Adresse. Ich bin gerne bereit zu helfen. Ich "
  2261.  LOCATE 10,7:PRINT"hoffe Sie können mein Programm nutzen."
  2262.  fakt%=1
  2263. RETURN 
  2264.  
  2265. Hilfe:
  2266.  
  2267.  MOUSE OFF
  2268.  WINDOW 3,"Hilfe !!!!!!!",(80,50)-(550,140),0,1
  2269.  LOCATE 2,25:PRINT "Hilferoutine"
  2270.  LOCATE 4,7:PRINT " Durch Anwählen eines Menüpunktes erhalten Sie"
  2271.  LOCATE 5,7:PRINT "eine Ausführliche  Beschreibung der jeweiligen"
  2272.  LOCATE 6,7:PRINT "Funktion. Durch Drücken einer beliebigen Taste"
  2273.  LOCATE 7,7:PRINT "blättern Sie nach vor.Durch 'Mouseclick' unter-"
  2274.  LOCATE 8,7:PRINT "brechen Sie die Hilferoutine und kehren wieder"
  2275.  LOCATE 9,7:PRINT "ins Hauptprogramm zurück. Wählen Sie nun bitte"
  2276.  LOCATE 10,7:PRINT"einen Menüpunkt.
  2277.  hilfeflag%=1
  2278. RETURN
  2279.  
  2280. Hilferoutine:
  2281.  
  2282.  WHILE INKEY$<>"":WEND
  2283.  hilfeflag%=0
  2284.  IF leiste>2 THEN punkte=0:leiste=1
  2285.  IF punkte>14 OR hilfefile$(leiste-1,punkte)="" THEN 
  2286.  fehlertext$="Dafür gibt es keinen Hilfetext !"
  2287.  GOTO Fehlermeldung
  2288.  END IF
  2289.  diskfehler=0:CLOSE #2
  2290.  OPEN "Hilfe/"+hilfefile$(leiste-1,punkte) FOR INPUT AS#2
  2291.  IF diskfehler=0 THEN Hilfeladen
  2292.  fehlertext$="Sorry, mir hat jemand das Hilfefile gestohlen !"
  2293.  CLOSE #2
  2294. GOTO Fehlermeldung
  2295.  
  2296. Hilfeladen:
  2297.  
  2298.  WINDOW 3,"Beschreibung für "+hilfefile$(leiste-1,punkte),(80,50)-(550,140),0,1
  2299.  hzeile%=1:hlf%=1
  2300. Weiter13:
  2301.  IF EOF(2) THEN Weiter14
  2302.  LINE INPUT#2,zeighilfe$
  2303.  IF hzeile%>9 THEN 
  2304.  mousep%=16
  2305. RETURN 
  2306.  
  2307. Mp16:
  2308.  mousep%=0 
  2309.  hzeile%=1:CLS
  2310.  IF tdr=0 THEN Weiter15
  2311.  END IF
  2312.  hzeile%=hzeile%+1:hlaenge%=LEN(zeighilfe$)*8
  2313.  LOCATE hzeile%,1
  2314.  IF zeighilfe$<>"" THEN PRINT PTAB(240-hlaenge%/2)zeighilfe$
  2315.  tdr=0:GOTO Weiter13
  2316. Weiter14:
  2317.  mousep%=17
  2318. RETURN
  2319. Mp17:
  2320.  mousep%=0 
  2321. Weiter15:
  2322.  hlf%=0:CLOSE #2
  2323. GOTO Windowclose3
  2324.  
  2325. Sysst:
  2326.  
  2327.  windowtext$="Systemstatus:":GOSUB Openwindow3
  2328.  LOCATE 2,2:PRINT "Aktuelle Datei       :"dateiname$
  2329.  LOCATE 3,2:PRINT "Aktuelle Kontenliste :"Kontenliste$
  2330.  LOCATE 4,2:PRINT "Zeitbereich der Datei:"d0zeitstart$" bis "d0zeitende$
  2331.  LOCATE 5,2:PRINT "Aktuelle Zeitmaske   :"zeitstart$" bis "zeitende$
  2332.  LOCATE 6,2:PRINT "--------------------------------------------------------"
  2333.  LOCATE 7,2:PRINT "Dateigröße :"datenmenge"    Verbraucht:"anzahl%"    Frei:"datenmenge-anzahl%
  2334.  LOCATE 8,2:PRINT "--------------------------------------------------------"
  2335.  LOCATE 9,2:PRINT "Freie Bytes im Systemspeicher  :"FRE(-1)
  2336.  LOCATE 10,2:PRINT "Freie Bytes für Haushaltsdaten :"FRE(0)
  2337.  fakt%=1
  2338. RETURN
  2339.  
  2340. Wae:
  2341.  
  2342.  WINDOW 3,"Währungszeichen ändern:",(180,60)-(450,140),0,1
  2343.  LOCATE 2,2:PRINT "Bitte Währungszeichen eingeben."
  2344.  LINE (90,29)-(180,42),3,bf
  2345.  LOCATE 5,16:PRINT SPACE$(3):msgs$=waehrung$:laenge=2
  2346.  LOCATE 5,16:GOSUB Superinput:waehrung$=msgs$
  2347.  ttextrl=8:ttextrp=9:ttextfl=8:ttextfp=22:GOSUB Bestaetigung
  2348.  mousep%=14:RETURN
  2349. Mp14:
  2350.  mousep%=0 
  2351.  IF fehler=1 THEN Windowclose3
  2352.  WINDOW 1:LOCATE 21,58:PRINT "Gesamt   "
  2353.  LOCATE 21,65:PRINT waehrung$
  2354.  GOSUB Systemsetsave
  2355. GOTO Windowclose3
  2356.  
  2357. Cursor:   
  2358.  
  2359.  LINE (0,0)-(7,7),2,bf
  2360.  GET (0,0)-(7,7),c%
  2361.  GET (0,0)-(1,7),cs%
  2362.  LINE (0,0)-(7,7),0,bf
  2363. RETURN 
  2364.  
  2365. Openlibrarys:
  2366.  
  2367.  diskfehler=0
  2368.  LIBRARY "graphics.library"
  2369.  IF diskfehler>0 THEN
  2370.  fehlertext$="Graphics Library nicht vorhanden !"
  2371.  GOSUB Fehlermeldung:SYSTEM
  2372.  END IF
  2373.  LIBRARY "exec.library"
  2374.  IF diskfehler>0 THEN
  2375.  fehlertext$="Exec Library nicht vorhanden !"
  2376.  GOSUB Fehlermeldung:SYSTEM
  2377.  END IF
  2378.  LIBRARY "intuition.library"
  2379.  IF diskfehler>0 THEN 
  2380.  fehlertext$="Intuition Library nicht vorhanden !"
  2381.  GOSUB Fehlermeldung:SYSTEM
  2382.  END IF
  2383. RETURN                
  2384.                 
  2385. Mcp:
  2386.  
  2387.  dummy=MOUSE(0):xpos%=MOUSE(3):ypos%=MOUSE(4)
  2388.  IF xpos%>(offset%)*8 AND xpos%<(offset%+laenge)*8 THEN
  2389.    IF ypos%>(y%-1)*8-3 AND ypos%<y%*8+3 THEN
  2390.      mcpos%=INT((xpos%)/8)-offset%
  2391.   END IF
  2392.  END IF
  2393. RETURN
  2394.  
  2395. Editor:
  2396.  
  2397.  ed%=1:
  2398.  MOUSE ON
  2399.  mcpos%=-1
  2400.  max%=laenge
  2401.  backup$=msgs$
  2402.  y%=CSRLIN
  2403.  offset%=POS(0)-1
  2404.  mode%=1:bu%=0
  2405.  x%=LEN(backup$):in$=""
  2406.  ox%=LEN(prompt$)+1
  2407.  IF type%=0 THEN
  2408.  lo=32:hi=255:r1=lo:r2=hi
  2409.  ELSEIF type%=1 THEN
  2410.  lo=45:hi=57:r1=40:r2=43
  2411.  END IF
  2412.             
  2413.  LOCATE y%,1+offset%
  2414.  PRINT  prompt$;backup$
  2415.  y%=CSRLIN-1
  2416.  GOSUB Putc        
  2417.  WHILE in$<>CHR$(13)
  2418.  in$=""
  2419. Loop25:
  2420.  SLEEP
  2421.  in$=INKEY$
  2422.  IF in$<>"" OR mcpos%>=0 THEN Loop26
  2423.  GOTO Loop25
  2424. Loop26:
  2425.  IF mcpos%<0 THEN 
  2426.  bx%=x%
  2427.  IF in$=CHR$(8) THEN '[BACKSPACE]
  2428.  in$=""
  2429.  wipe%=1
  2430.  IF x%>0 THEN x%=x%-1
  2431.  ELSEIF in$=CHR$(127) THEN '[DEL]
  2432.  in$=""
  2433.  wipe%=1
  2434.  END IF
  2435.  IF (in$>=CHR$(lo) AND in$<=CHR$(hi)) OR (in$>=CHR$(r1)AND in$<=CHR$(r2)) OR in$="" THEN
  2436.  add$=LEFT$(backup$,x%)+in$
  2437.  IF x%=LEN(backup$) THEN
  2438.    backup$=add$
  2439.    ELSEIF x%>LEN(backup$) THEN
  2440.    diff%=x%-LEN(backup$)
  2441.    backup$=backup$+SPACE$(diff%)+in$
  2442.   ELSE
  2443.    backup$=add$+RIGHT$(backup$,LEN(backup$)-x%-mode%)
  2444.  END IF
  2445.  IF wipe%=1 THEN
  2446.    wipe%=0
  2447.   ELSE
  2448.    x%=x%+1
  2449.  END IF
  2450.  ELSEIF in$=CHR$(27) THEN '[INSERT]
  2451.  SWAP mode%,bu%
  2452.  ELSEIF in$=CHR$(31) THEN '[CSRLEFT]
  2453.  IF x%>0 THEN
  2454.   x%=x%-1
  2455.   ELSE
  2456.   BEEP
  2457.   END IF
  2458.   ELSEIF in$=CHR$(30) THEN '[CSRRIGHT]
  2459.   x%=x%+1
  2460.   END IF
  2461.  IF bu%=0 THEN
  2462.  PUT ((bx%+LEN(prompt$)+offset%)*8,(y%-1)*8),c%,XOR
  2463.  ELSE
  2464.  PUT ((bx%+LEN(prompt$)+offset%)*8,(y%-1)*8),cs%,XOR
  2465.  END IF
  2466.  IF type%=3 THEN
  2467.    IF x%>0 THEN x%=x%-1
  2468.    ELSEIF x%>max% THEN
  2469.     x%=x%-1
  2470.     BEEP
  2471.    END IF
  2472.    IF LEN(backup$)>max% THEN
  2473.     backup$=LEFT$(backup$,max%)
  2474.     BEEP
  2475.  END IF 
  2476.  LOCATE y%,ox%+offset%
  2477.  bu$=backup$+SPACE$(1)
  2478.  CALL Text(WINDOW(8),SADD(bu$),LEN(bu$))
  2479.  GOSUB Putc
  2480.  ELSE
  2481.  GOSUB Putc
  2482.  x%=mcpos%:mcpos%=-1
  2483.  GOSUB Putc
  2484.  END IF
  2485.  MOUSE ON
  2486.  WEND            
  2487.  GOSUB Putc
  2488.  msgs$=backup$ 
  2489.  ed%=0
  2490. RETURN
  2491.  
  2492. Putc:
  2493.  
  2494.  IF bu%=0 THEN
  2495.  PUT ((x%+LEN(prompt$)+offset%)*8,(y%-1)*8),c%,XOR
  2496.  ELSE
  2497.  PUT ((x%+LEN(prompt$)+offset%)*8,(y%-1)*8),cs%,XOR
  2498.  END IF
  2499. RETURN 
  2500.  
  2501. RETURN 
  2502.  
  2503. Guru:
  2504.  
  2505.  alertnum&=0
  2506.  res&=DisplayAlert&(alertnum&,SADD(errText1$),56)
  2507. GOTO Ende
  2508.  
  2509. Outoffmemtext:
  2510.  
  2511.  errText1$=CHR$(0)+CHR$(96)+CHR$(20)+"Oh weh, oh weh, da ist ein schwerer Fehler aufgetreten !"
  2512.  errText1$=errText1$+CHR$(0)+CHR$(1)+CHR$(0)+CHR$(72)+CHR$(30)+"Ich sehe mich daher leider gezwungen das Programm zu Beenden."                      
  2513.  errText1$=errText1$+CHR$(0)+CHR$(1)+CHR$(0)+CHR$(168)+CHR$(40)+"Drücken Sie nun die linke Maustaste."
  2514.  
  2515.  errText$=CHR$(0)+CHR$(96)+CHR$(20)+"Jetzt  haben Sie es geschafft .  Mir ist  der Speicher"
  2516.  errText$=errText$+CHR$(0)+CHR$(1)+CHR$(0)+CHR$(96)+CHR$(28)+"ausgegangen. Versuchen Sie eventuell geöffnete Fenster"
  2517.  errText$=errText$+CHR$(0)+CHR$(1)+CHR$(0)+CHR$(96)+CHR$(36)+"zu schließen  oder Programme die noch Speicher belegen"
  2518.  errText$=errText$+CHR$(0)+CHR$(1)+CHR$(0)+CHR$(96)+CHR$(44)+"wegzuräumen . Sollte ich wieder mehr als  30000  Bytes"
  2519.  errText$=errText$+CHR$(0)+CHR$(1)+CHR$(0)+CHR$(96)+CHR$(52)+"freien Systemspeicher vorfinden so können Sie mit viel"
  2520.  errText$=errText$+CHR$(0)+CHR$(1)+CHR$(0)+CHR$(96)+CHR$(60)+"Glück ihre Arbeit fortsetzen."
  2521.  errText$=errText$+CHR$(0)+CHR$(1)+CHR$(0)+CHR$(168)+CHR$(82)+"Drücken Sie nun die Linke Maustaste."
  2522.  errText$=errText$+CHR$(0)
  2523. RETURN
  2524.  
  2525. Outoffmem:
  2526.  
  2527.  alertnum&=0
  2528.  res&=DisplayAlert&(alertnum&,SADD(errText$),100)
  2529.  GOSUB Mouseclick
  2530.  IF ERR=7 THEN RUN
  2531. RETURN
  2532.  
  2533. Screendown:
  2534.  
  2535.  FOR x%=1 TO 28
  2536.  sc&=PEEKL(WINDOW(7)+46)
  2537.  CALL MoveScreen(sc&,0,10)
  2538.  NEXT
  2539. RETURN
  2540.  
  2541. Screenup:
  2542.  
  2543.  FOR x%=1 TO 28
  2544.  sc&=PEEKL(WINDOW(7)+46)
  2545.  CALL MoveScreen(sc&,0,-10)
  2546.  NEXT
  2547. RETURN
  2548.  
  2549. Declarieren:
  2550.  
  2551.  IF alreadydeclared = 0 THEN
  2552.   DECLARE FUNCTION DisplayAlert&  LIBRARY
  2553.   DECLARE FUNCTION AllocSignal%() LIBRARY
  2554.   DECLARE FUNCTION AllocMem&()    LIBRARY
  2555.   DECLARE FUNCTION FindTask&()    LIBRARY
  2556.   DECLARE FUNCTION DoIO&()        LIBRARY
  2557.   DECLARE FUNCTION OpenDevice&    LIBRARY
  2558.   alreadydeclared = 1
  2559.  END IF
  2560. RETURN
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.